当前位置: 首页 > article >正文

leetcode35.搜索插入位置

题目:

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

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

  • 1 <= nums.length <= 104

  • -104 <= nums[i] <= 104

  • nums 为 无重复元素 的 升序 排列数组

  • -104 <= target <= 104

代码如下:

class Solution {
    public int searchInsert(int[] nums, int target) {
        int len = nums.length;
        int left = 0;
        int right = len-1,ans = len;
        while(left<=right){
            int mid = (right-left)/2+left;
            if(nums[mid]>=target){
                ans = mid;
                right = mid-1;
            }else{
                left = mid+1;
            }
        }
        return ans;
    }
}

详解:

考虑通过二分查找,再基于基本的二分查找上,需要多一个如果找不到数字则插入的步骤,在找不到这个数字的时候我们可以在比他稍微大一点的数字左边进行插入。

注意:

1.如果查找不到该数字时,它左右俩边都会进行一次比较,所以我们只需要在一边进行赋值。

2.在初始化赋值ans时要定为len,因为可能出现要查询的数字大于数组中所有的数字,此时就需要插入最后。


http://www.kler.cn/a/567118.html

相关文章:

  • 02内存映射与bmp解码
  • GCM模式在IPSec中的应用
  • Redis持久化方案RDB和AOF
  • C#光速入门的指南
  • 人工智能之数学基础:线性代数中的特殊矩阵
  • 计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
  • Linux笔记---一切皆文件
  • AI编程Cursor之高级使用技巧
  • iOS for...in 循环
  • SpringBoot项目启动报错:PathVariable annotation was empty on param 0.
  • thinkphp下的Job队列处理
  • C语言多级指针详解 - 通过实例理解一级、二级、三级指针
  • day01_Java基础
  • 请谈谈 Node.js 中的流(Stream)模块,如何使用流进行数据处理?
  • Windows提权之第三方提权(九)
  • uniapp选中日期移动到中间
  • P8682 [蓝桥杯 2019 省 B] 等差数列--sort()
  • 宝塔webhooks与码云实现自动部署
  • 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局高阶应用
  • 【产品小白】怎么量化用户体验呢