Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Here are few examples.
[1,3,5,6]
, 5 → 2
[1,3,5,6]
, 2 → 1
[1,3,5,6]
, 7 → 4
[1,3,5,6]
, 0 → 0
相当于手动实现Arrays.binarySearch的功能。
也就是二分查找,找到了一定在mid位置,没找到在lo的位置就是应该插入的位置。
public static int searchInsert(int[] nums, int target)
{
int lo=0;
int hi=nums.length-1;
int mid=-1;
boolean find=false;
while(lo<=hi)
{
mid=(lo+hi)>>1;
if(mid>=nums.length)
break;
if(nums[mid]<target)
lo=mid+1;
else if(nums[mid]>target)
hi=mid-1;
else {
find=true;
break;
}
}
return find?mid:lo;
}
}