思路
给定一排序数组和待插元素,若存在则返回位置不存在则返回插入位置。
二分,若存在直接返回对应下表,若不存在则找到数组中比目标元素小的那个元素的位置,返回该位置+1.
代码
class Solution {
public int searchInsert(int[] nums, int target) {
int size = nums.length;
int ret =-1;
for(int l=0,r=size-1;l<=r;){
int mid = (l+r)>>1;
int n = nums[mid];
if(n==target) return mid;
else
//若不存在则记录比目标元素小的下标位置
if(n<target) {l = mid+1;ret = mid;}
else {r = mid-1;}
}
return ret+1;
}
}