[leetCode]35. 搜索插入位置
解法 二分查找
因为这题输入的是有序数组,需要查找target
的插入位置,因此马上可以想到二分查找算法。
如上图所示如果查找到了target
则返回mid
,如果为查询到则返回lo
或者hi+1
。代码如下:
class Solution {
public int searchInsert(int[] nums, int target) {
return rank(nums,target);
}
public int rank(int[] nums,int target){
int lo = 0;
int hi = nums.length - 1;
while(lo <= hi){
int mid = lo + (hi - lo)/2;
if(target > nums[mid]){
lo = mid + 1;
}else if(target < nums[mid]){
hi = mid - 1;
}else{
return mid;
}
}
return lo;//或者返回hi+1
}
}