题目要求:给定一个数组和一个目标值,如果该目标值在数组中,返回其索引下标,否则返回插入位置。
解题思路:
一看到有序数组的查找问题,要想到能不能用二分查找,因为该算法时间复杂度为logN,比暴力破解来的快。
下面是c++代码实现:
class Solution {
public:
int searchInsert(vector<int>& nums, int target)
{
int left = 0,right = nums.size()-1;//设定初始位置
int mid = 0;
while(left<=right)//只要左值没有超过右值,一直循环
{
mid = left+(right-left)/2;
if(nums[mid]<target)
{
left = mid+1;//关键语句
}
else
{
right = mid-1;//关键语句
}
}
return left;
}
};
觉着理解不了,可以自己写几个例子。我是沐风,和你一起努力~