leetcode35--搜索插入位置--二分查找刷题

news/2024/10/4 1:49:50 标签: 数据结构, 二分查找

搜索插入位置

一共会出现下面四种情况:

目标值在数组所有元素之前
目标值等于数组中某一个元素
目标值插入数组中的位置
目标值在数组所有元素之后

  • 首先在二分查找的代码之前处理掉目标值在数组所有元素之前和之后的情况
  • 如果目标值在数组中的某个位置,正常的二分查找的代码即可处理
  • 所以主要看如何处理[目标值插入数组中的位置]的情况

如果使用while(left<=right)二分查找的写法,可以发现,数组中没有目标值的时候,最后结束循环的时候,left>right,更准确地说是leftright+1;
而且每次结束循环的时候,mid
right、nums[right]是最接近目标值且小于目标值的一个值。
所以如果要插入到数组中,插入的位置就是left的这个位置。

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

http://www.niftyadmin.cn/n/5689278.html

相关文章

25货拉拉校园招聘面试经验 面试最常见问题总结

货拉拉校园招聘面试经验 目录 【面试经历】 问题+详细答案 面试全流程 【面试经历】 发面经,攒人品。 项目问题: 1.AOP日志落库到数据库,为什么不用一些现成的方案? 2.邀请链接的id怎么用redis生成的? 3.乐观锁保证了奖励的正确发放,请你说说乐观锁的原理。 4.奖…

【BUUCTF N1BOOK】[第一章 web入门]

常见的搜集 这里提示敏感文件 可以想到敏感文件的类型 1.gedit备份文件 格式&#xff1a;filename~ ex.index.php~ 2.vim备份文件 格式&#xff1a;.filename.swap *.swo *.swn ex.index.php.swp 3.robots.txt 可以通过访问每个目录得到flag 也可以使用扫描软件 扫描目录 …

Linux查看触摸坐标点的方法,触觉智能RK3562开发板,瑞芯微、全志等通用

平时遇到键盘、鼠标、触摸板等输入设备无响应等异常情况时&#xff0c;一般通过更换设备判断异常。但在遇到更换正常设备后&#xff0c;输入仍然异常的情况下&#xff0c;可以借助evtest工具查看内核的上报事件信息&#xff0c;协助定位问题所在。 本次使用的是触觉智能EVB356…

win10装机 vs+qt+cuda

1.QT QT插件 Index of /official_releases/vsaddin QT软件 Index of /archive/qt 2. vs vs2019 Visual Studio 2019 生成号和发布日期 | Microsoft Learn vs2022 Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 3.cuda https://developer.nvidia.com/cuda-1…

【ShuQiHere】 从零开始掌握随机森林与极端随机森林:原理、推导与实战

&#x1f31f; 【ShuQiHere】 Mastering Random Forests and Extremely Randomized Trees from Scratch: Theory, Derivations, and Practice 目录 引言背景与基本概念 2.1 机器学习与集成学习概述2.2 弱学习器与强学习器 决策树基础 3.1 决策树的构建原理3.2 信息熵与信息增…

JDBC 快速入门

JDBC 快速入门 搭建步骤代码实现数据库java 代码 搭建步骤 准备数据库官网下载数据库连接驱动jar 包。https://downloads.mysql.com/archives/c-j/创建 java 项目&#xff0c;在项目下创建 lib 文件夹&#xff0c;将下载的驱动 jar 包复制到文件夹里选中 lib 文件夹右键 ->…

性能测试的方式有哪些

静态的性能测试 静态的性能测试(以下简称静态测试)在性能测试中往往比功能测试更加重要&#xff0c;因为很多严重的性能效率方面的缺陷是在系统架构设计阶段引入的&#xff0c;例如系统架构不合理或不均衡&#xff0c;采用了有问题的算法模型等。这些缺陷的引入可能是由于设计…

概率论——随机分布

离散型——二项分布 X ~ B&#xff08;n , p&#xff09; 例题&#xff1a; 例题二&#xff1a; 离散型——泊松分布 例题 注意&#xff1a;记住题二的结论&#xff01;&#xff01;&#xff01; 连续性——均匀分布 例题&#xff1a;求解概率密度&#xff08;具体方法见随机…