搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
int searchInsert(vector<int>& nums,int target){
int left = 0;
int right = nums.size()-1;
if(target<nums[left]) //target在数组第一个位置
return 0;
if(target>nums[right]) //target在数组的末尾
return right+1;
while(left<=right){
int middle = left + (right-left)/2; //防止数值溢出
if(target>nums[middle]) //target在middle右侧
left = middle+1;
else if(target<nums[middle]) //target在middle左侧
right = middle-1;
else
return middle; //target在middle处
}
return left; //退出循环时left在right右边,target插入到较大数的位置上,此时nums[left]>nums[right]
}