35. Search Insert Position
binary search 二分搜索拓展
解题思路
- 数组是从小到大排序好,那么如果最小值
nums[0]都大于目标值target,直接返回0 - 利用二分法
right = 0 left = nums.lenght - 1 mid是左右边界的中值 - 如果找到了相等的值,直接返回 mid
- 如果最后没有找到,那么
left最后与right** 指向了同一个值**,这个值如果小于target返回left + 1否则返回left
代码
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
if(nums[0] > target) return 0
let right = 0
let left = nums.length - 1
while(left > right) {
let mid = Math.floor(right + (left - right) / 2)
if(nums[mid] === target) {
return mid
} else if(nums[mid] > target) {
left = mid - 1
} else {
right = mid + 1
}
}
if(nums[left] < target) {
return left + 1
}
return left
};