力扣链接:35.搜索插入位置
难度:⭐
解题关键词:二分查找
解题思路:使用二分法,从左到右找到数组中最后一个比 target 小的元素,然后在这个 index 后面插入 target。注意,一开始 index 初始化为 -1,如果所有元素都比 target 大,那么直接在 index 为 0 的地方执行插入。
typescript
function searchInsert(nums: number[], target: number): number {
let left = 0;
let right = nums.length - 1;
// target 要插入的 index 这里要默认为 -1
let indexTarget = -1;
while (left <= right) {
const mid = Math.floor((right - left) / 2) + left;
// 如果相等,提前返回
if (nums[mid] === target) return mid;
if (nums[mid] > target) {
right = mid - 1;
} else {
indexTarget = mid;
left = mid + 1;
}
}
return indexTarget + 1;
}