Skip to content

力扣链接: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;
}