leeCode算法--搜索插入位置

题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。

解析:

  • 首先给定的是一个有序数组,那么我们直接循环就OK,时间复杂度应该是O(1)
  • 题目要求返回的是索引,并不是将目标元素插入到数组的某个位置,这就简单了,并不会对数组做什么操作。那么就可以说是只要发现元素大于等于(>=)目标元素就找到了这个位置,否则就是没有找到这个位置,那么目标值一定是最大值,返回最后一个的下标就OK!
  • 注意处理边界值。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    let searchInsert = (nums, target) => {
    let index = 0
    for (let i = 0;
    i < nums.length - 1;
    i++
    ) {
    if (nums[i] >= target) {
    index = i
    break
    }
    index = nums.length
    }
    return index
    }
    searchInsert([1,3,5,6], 5) // 3
    searchInsert([1,3,5,6], 2) // 1
    searchInsert([1,3,5,6], 0) // 0

    题还是比较简单,但是别让自己的思维走进死胡同,其实对于Javascript来说,有个方法叫reduce,此法也许更简洁。That’s all!
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信