https://leetcode-cn.com/problems/search-insert-position/submissions/
本题和704.二分查找类似,不同的是,在查找过后若target元素不存在,返回的不是-1,而是target元素应按序插入的位置。
int searchInsert(int* nums, int numsSize, int target){
int low=0,high=numsSize-1,middle;
while(low<=high){
middle=(low+high)/2;
if(nums[middle]>target) high=middle-1;
else if(nums[middle]<target) low=middle+1;
else return middle;
}
//返回应按需插入的下标
return low;
}
先对数组进行二分查找,若low>high,则说明target元素在数组中不存在,则判断元素应插入的位置。经历一轮二分查找后,下标low把数组分为两部分:左边小于target,右边大于target,所以返回low就行了。
//返回应按需插入的下标
return low;