题目描述:给出一个有序数组,和一个target val,在这个有序数组中查找这个值,查找到了的话返回该值的下标号,找不到返回该值应该插入位置的下标号。例如:
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
解题思路:有序数组+查找=二分。这一题就是标准的二分查找。二分的细节非常容易出错,以后要多多复习注意。
===============================================================================================
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int N = nums.size();
if(N==0) return 0;
int l=0, r=N-1, m;
while(l<=r)
{
m=(l+r)/2;
if(nums[m]==target) return m;
if(nums[m]<target) l=m+1;
else r=m-1;
}
return l;
}
};