[LeetCode-搜索插入位置 ] | 刷题打卡

题目描述

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:
输入: [1,3,5,6], 5
输出: 2

示例 2:
输入: [1,3,5,6], 2
输出: 1

示例 3:
输入: [1,3,5,6], 7
输出: 4

示例 4:
输入: [1,3,5,6], 0
输出: 0
复制代码

思路分析

数组中查找某个元素,使用二分法

AC代码

var searchInsert = function (nums, target) {
  // let mid = Math.floor(nums.length / 2)
  let right = 0,
    left = nums.length - 1
  let mid
  while (left >= right) {
    mid = Math.floor((right + left) / 2)
    if (nums[mid] > target) {
      //大于,像右查找
      left = mid - 1
    } else if (nums[mid] < target) {
      right = mid + 1
    } else {
      return mid
    }
  }

  if (target > nums[mid]) {
    return mid + 1
  } else {
    return mid
  }
}
复制代码

总结

二分法查找需要注意左右边界的问题

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享