LeetCode热题(JS版)- 35. 搜索插入位置

65 阅读1分钟

题目

给定不同整数的排序数组和目标值,如果找到目标,则返回索引。如果没有,则返回按顺序插入的索引。

您必须编写具有“O(log n)”运行时复杂性的算法。

 

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

思路

  • 二分查找
function searchInsert(nums: number[], target: number): number {
  let left = 0;
  let right = nums.length - 1;

  while (left <= right) {
    const mid = Math.floor((left + right) / 2);

    if (target <= nums[mid]) {
      right = mid - 1; // 只需左侧
    } else {
      left = mid + 1; // 只需右侧
    }
  }

  return left;
}