做游戏破解版的网站,专业做网站建设制作服务,建怎么网站比较赚钱,网页设计与制作教程第四版课后答案1. 题目链接#xff1a;35. 搜索插入位置
2. 题目描述#xff1a; 给定一个排序数组和一个目标值#xff0c;在数组中找到目标值#xff0c;并返回其索引。如果目标值不存在于数组中#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。…1. 题目链接35. 搜索插入位置
2. 题目描述 给定一个排序数组和一个目标值在数组中找到目标值并返回其索引。如果目标值不存在于数组中返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5
输出: 2示例 2: 输入: nums [1,3,5,6], target 2
输出: 1示例 3: 输入: nums [1,3,5,6], target 7
输出: 4提示: 1 nums.length 104-104 nums[i] 104nums 为 无重复元素 的 升序 排列数组-104 target 104 3. 算法思路二分查找 设插入坐标为index根据插入位置的特点可以知道 [left,index-1]内所有元素均是小于target的[index,right]内所有元素均是大于等于target的 设left为左边界right为有边界根据mid位置的信息决定下一轮的区间范围 当nums[mid]target时说明mid落在了[indexright]区间上mid包括mid本身可能是最终结果所以我们接下来查找的区间在[left,mid]上。因此更新right到mid位置继续查找当nums[mid]target时说明mid落在了[left,index-1]区间上mid右边但不包括mid本身可能是最终结果所以我们接下来查找的区间在[mid1,right]上。因此更新left到mid1的位置继续查找 直到我们的查找结果的长度变为1也就是leftright的时候left或者right所在的位置就是我们要找的结果 4. C算法代码
class Solution {
public:int searchInsert(vectorint nums, int target) {int left0,rightnums.size()-1;while(leftright){int midleft(right-left)/2;if(nums[mid]target){leftmid1;}else{rightmid;}}if(nums[left]target) return right1;return right;}
};