35题:搜索插入位置

2022/7/25 23:25:28

本文主要是介绍35题:搜索插入位置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

例题:

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

请必须使用时间复杂度为 O(log n) 的算法。


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

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

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

  分析:

    当看到题目说:排序数组、寻找目标值和o(log n) 时,就想到了二分查找

    设置2个变量,分别为"left,right", 再while循环,定义mid,去判断nums[mid] > target,如果大于,则缩小右边界,让right = mid - 1,如果小于,则缩小左边界,让left = mid + 1, 如果刚好mid等于target,则直接返回mid,如果目标值不存在数组,则返回left

var searchInsert = function(nums, target) {
        let right = nums.length - 1;
        let left = 0;

        while (left <= right) {
          let mid = Math.floor((left + right) / 2);
          if (nums[mid] == target) {
            return mid;
          }
          if (nums[mid] < target) {
            left = mid + 1;
          } else {
            right = mid - 1;
          }
        }
        return left
      };

  



这篇关于35题:搜索插入位置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程