35.搜索插入位置
二分查找,最重要的是边界条件, 这里用到的思路是左闭右闭区间。
js版本
var searchInsert = function(nums, target) {
let low = 0,
high = nums.length - 1,
mid = 0;//跟踪要查找的列表部分
while(low <= high) { //也就是范围没有缩小到只包含一个元素
mid = parseInt((low+high)/2);
let guess = nums[mid];
if (guess == target) {
return mid;//返回这个位置
} if (guess < target ) {
low = mid+1;
} else {
high = mid-1;
}
}
return low;
};
209. 长度最小的子数组
java版本
class Solution {
public int searchInsert(int[] nums, int target) {
int left = 0,
right = nums.length - 1;
while(left <= right) { //左闭右闭 [left,right]
int mid = left + (right-left)/2;
if(nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1; //target在右区间 [middle+1,right]
} else {
right = mid - 1; //target在左区间 [left,middle-1]
}
}
return right + 1;
}
}