Skip to content

Latest commit

 

History

History
53 lines (47 loc) · 1.2 KB

35.search-insert-position.md

File metadata and controls

53 lines (47 loc) · 1.2 KB

搜索插入位置

题目

思路

思路一

排序数组, 则可以直接从第一位开始, 判断目标值大小, 一直到数组中的某个值比目标值大或相同, 则返回索引值即可.

/**
 * @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
};