题目:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
//时间复杂度为O(n),暴力解法
// if(nums.size()==0)
// return 0;
// else
// {
// for(int i=0;i<nums.size();++i)
// {
// if(nums[i]>=target)
// {
// return i;
// }
// }
// }
// return nums.size();
//二分查找法
int n=nums.size();
int left=0,right=n-1;
while(left<=right)
{
//这里等价于(left+regth)/2,但是可以有效防止溢出
int middle=left+(right-left)/2; //注意。
if(nums[middle]==target)
return middle;
else if(nums[middle]>target)
right=middle-1; //注意
else
left=middle+1; //注意
}
//注意
return right+1;
}
};