一、题目
Given a sorted array and a target value,return the index if the target is found. If not, return the index where itwould be if it were inserted in order.You may assume no duplicates in the array.Here are few examples.
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
二、代码
classSolution {
public:
int searchInsert(vector<int>&nums, int target) {
int low=0;
int high=nums.size()-1;
while (low<=high)
{
int mid=(low+high)/2;
if (nums[mid]==target)return mid;
else if (nums[mid]>target)high=mid-1;
else low=mid+1;
}
return low;
}
};
三、思路
二分查找的应用,对于每次的mid将其与target比较,再决定是在当前mid的下区间还是上区间进行下一步查找,要注意的是最后要返回的是low还是high,可以经过无脑调试几次得出应返回low。