其他分享
首页 > 其他分享> > 35题:搜索插入位置

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
      };

  

标签:target,nums,mid,35,插入,搜索,数组,目标值,left
来源: https://www.cnblogs.com/0-again/p/16519008.html