排序数组, 则可以直接从第一位开始, 判断目标值大小, 一直到数组中的某个值比目标值大或相同, 则返回索引值即可.
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
const length = nums.length
let i = 0
for (; i < length; i++) {
if (nums[i] >= target) {
return i
}
}
return length
};
因为是一个排序数组, 则可以从中点开始判断, 如果数组的中间值比目标值大, 则继续判断中间值右边的中间值, 否则判断左边的中间值, 一直到两个中值序号相差1
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let left = 0
let right = nums.length
while (left < right) {
const middle = ((left + right) / 2) >>> 0
const num = nums[middle]
if (num > target) {
right = middle
} else if (num < target) {
left = middle + 1
} else {
return middle
}
}
return left
};