题目
https://leetcode-cn.com/problems/search-insert-position/
思路
最基础的二分法,有一个亮点就是思考怎么找到被插入的数字的位置
1. 注意js的除法是会自动计算出小数的,所以计算mid的时候要注意写成是Math.floor( )
2. 当数字不存在时,插入的位置就是lower的位置。
因为在最后一次循环的时候,一定有lower = upper = mid;
然后,假如插入的数比这个位置的数大,那么就会有lower = mid + 1;
假如插入的数比这个位置的数小,那么这个位置正好是它应该被插入的地方
代码
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let lower = 0;
let upper = nums.length - 1;
let mid = 0;
while (lower <= upper){
mid = lower + Math.floor((upper - lower)/2);
if (nums[mid] === target){
return mid;
}
else if (nums[mid] < target){
lower = mid + 1;
}
else{
upper = mid - 1;
}
}
return lower;//如果都没找到的话,插入的位置应该就是lower的位置
};