35. 搜索插入位置

news2025/1/21 20:19:05

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

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

示例 1:

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

示例 2:

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

力扣icon-default.png?t=M85Bhttps://leetcode.cn/problems/search-insert-position/description/?envType=study-plan&id=suan-fa-ru-men&plan=algorithms&plan_progress=ya6j5ke

 解题:二分法,左闭右闭

情况一:middle >target && middle-1 <target ,那么就是我们要找的位置,直接return middle

情况二:middle >target && middle-1>=target,那么循环继续,查找左区间

情况三: middle <target && middle+1 >target ,那么就是我们要找的位置,直接return middle+1

情况四: middle <target && middle+1 <=target ,那么循环继续,查找右区间

除此之外,就是只有middle = target了,直接返回middle 

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    let left = 0 
    let right = nums.length-1
    if(target > nums[right]){
        return nums.length
    }
    while(right >=left){
        let middle =Math.floor(left +(right-left)/2) 
        if(nums[middle]>target && nums[middle-1]<target){
            return middle
        }
        else if (nums[middle]>target && nums[middle-1]>=target){
            right = middle -1
        }
        else if (nums[middle]<target && nums[middle+1]>target){
            return middle+1
        }
         else if (nums[middle]<target && nums[middle+1]<=target){
            left = middle +1
        }
        else return middle

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习100天(十六):016 逻辑回归损失函数

机器学习 100 天,今天讲的是:逻辑回归损失函数。 一、如何找到最佳分类直线 讲完了逻辑回归基本原理之后,我们再来思考一个非常关键的问题:就是如何找到最佳的分类直线呢? 如图中所示,如何判断这三条直线哪个更好?线性回归里,我们可以用均方误差作为损失函数,选择均…

非零基础自学Golang 第14章 反射 14.4 反射三定律

非零基础自学Golang 文章目录非零基础自学Golang第14章 反射14.4 反射三定律14.4.1 接口到反射类型的转换14.4.2 反射到接口类型的转换14.4.3 修改反射类型对象第14章 反射 14.4 反射三定律 在使用反射时&#xff0c;牢记这三条定律会让你对反射有更加清晰的认识。 14.4.1 接…

网络攻防中如何在海量虚假IP中找到目标服务或者设备的真实IP地址

网络攻防中如何在海量虚假IP中找到目标服务或者设备的真实IP地址。 Fav-up是一款功能强大的IP查询工具,该工具可以通过Shodan和Favicon(网站图标)来帮助研究人员查询目标服务或设备的真实IP地址。 工具安装 首先,该工具需要本地设备安装并部署好Python 3环境。然后广大研究…

5 | 如何更换证书

目录1 操作场景2 操作类型2.1 更换自有证书2.2 腾讯云托管证书2.3 一键替换证书3 结果校验1 操作场景 如果证书已过期&#xff0c;用户在浏览网站的时候会显示证书不可信&#xff1b; 2 操作类型 2.1 更换自有证书 登录 Web 应用防火墙控制台&#xff0c;在左侧导航中&…

load_ext是干什么的(autotime,autoreload)

文章目录load_extautotimeautoreload声明&#xff1a;本文都是自己的理解。 load_ext load_ext是jupyter notebook中的一个命令&#xff0c;而jupyter notebook和Ipython几乎可以等同。那load_ext作用是什么呢&#xff1f;我感觉作用就是类似于import。 load_extload extenst…

单片机AT89C51六位数码管秒表

详细代码讨论加我QQ&#xff1a;1271370903 1.1设计目的 本设计的数字电子秒表系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理&#xff0c;结合显示电路、LED数码管以及外部中断电路来设计计时器。将软、硬件有机地结合起来&#xff0c;使得系统能够实…

【Unity大气渲染】关于单次大气散射的理论知识

参考 最近在实现程序化天空盒&#xff0c;到了实现大气散射这一步&#xff0c;索性查漏补缺&#xff0c;把大气散射这块儿的理论知识补充明白了。跟着【实战】从零实现一套完整单次大气散射_一的推荐&#xff0c;学习这块我直接从Volumetric Atmospheric Scattering啃起。 补…

平安夜,愿大家平安健康!

12月24日平安夜(Christmas Eve)&#xff0c;是圣诞节前夕的晚上&#xff0c;寓意着耶稣诞生的夜晚会给世人带来平安幸福。 据《圣经》记载&#xff0c;耶稣诞生的那一晚&#xff0c;在旷野看守羊群的牧羊人&#xff0c;突然听见有声音自天上传来&#xff0c;向他们报耶稣降生的…

华为云桌面能为设计行业提供哪些“黑科技”?

华为云桌面能为设计行业提供哪些“黑科技”&#xff1f; 如今&#xff0c;传统设计模式中的软硬件更新迭代成本高、团队协作低效、资产利用率低和上下游进步不同步等缺陷日益显露&#xff0c;已经不能适应市场需求。华为云桌面携手赞奇科技打造出一个全方位的一站式云上内容制作…

[内网渗透]—GPO批量控制域内主机

GPO GPO(组策略管理),用来存储Active Directory中的策略。 自Windows Server2008开始,GPO开始支持计划任务,便于管理域中的计算机和用户,默认情况下,域用户的组策略每90分钟更新一次,但会随机偏移0-30分钟,域控制器的组策略每5分钟刷新一次 应用场景 在拿到域控后,…

数字硬件建模SystemVerilog-组合逻辑建模(3)使用函数表示组合逻辑

数字门级电路可分为两大类&#xff1a;组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点&#xff0c;在后面会作为单独的主题处理。组合逻辑描述了门级电路&#xff0c;其中逻辑块的输出直接反映到该块的输入值的组合&#xff0c;例如&#xff0c;双输入AND门的输出…

艾美捷Annexin V-FITC凋亡检测试剂盒:简单、快速

艾美捷Annexin V-FITC凋亡检测试剂盒&#xff1a;简单、快速的检测&#xff0c;区分凋亡细胞和坏死细胞。 艾美捷Annexin V-FITC凋亡检测试剂盒基本参数&#xff1a; 中文名称&#xff1a;Annexin V-FITC apoptosis detection kit 英文名字&#xff1a;Annexin V-FITC apopto…

Redis6入门到实战------ 四、Redis配置文件介绍

1.1 单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit 大小写不敏感 1.2 INCLUDES包含 类似jsp中的include&#xff0c;多实例的情况可以把公用的配置文件提取出来 1.3 网络相关配置 1.3.1 bind 默认情况bind127.0.0.1只能接…

linux基础学习-vim使用方法

直接输入vim&#xff0c;进入的是空白vim基本使用 命令模式&#xff1a;按键代表命令 i/a&#xff0c;切换为编辑模式:,切换到末行模式dd&#xff0c;删掉一行&#xff08;前面可以加数字&#xff09;yy&#xff0c;复制光标所在行&#xff08;前面可以加数字&#xff09;p&…

一建,PMP,软考,优先考哪个?

需要pmp资料可看封面或在文末获取。 这三者的共同点都是含有“项目管理”知识&#xff0c;可以用于项目管理岗位。 根据容易程度和知识点的基础程度来分&#xff0c;最好按照&#xff1a;PMP&#xff0c;软考&#xff0c;一建的顺序来考。 分别介绍一下三者&#xff1a; 【…

Robust Pose Estimation in Crowded Scenes with Direct Pose-Level Inference 阅读笔记

基于直接姿态级推理的拥挤场景鲁棒姿态估计 NeurIPS 2021 论文链接 代码链接 摘要&#xff1a;拥挤场景下的多人姿态估计具有挑战性&#xff0c;因为重叠和遮挡使得难以检测人体边界框并从单个关键点推断姿态线索&#xff08;关键点位置&#xff09;。为解决该问题&#xff0…

[MySQL]-死锁案例-唯一索引上的并发插入

[MySQL]-死锁案例-唯一索引上的并发插入 森格 | 2022年12月 本文是对实际work中遇到的死锁问题的复现&#xff0c;其目的是学会去分析死锁日志、还原日志上下文、理解死锁产生原因、MySQL处理机制&#xff08;回滚事务的选择&#xff09;&#xff0c;最后到死锁的解决方案的提…

7张图,剖析Redis缓存,文末附Redis工具类源码,建议收藏

一、缓存是什么&#xff1f; 缓存就是数据交换的缓存区&#xff0c;是存储数据的地方&#xff0c;一般读写性能较高。 二、缓存的作用和成本 1、缓存的作用 降低后端负载 提高读写效率&#xff0c;降低响应时间 2、缓存的成本 数据一致性成本 代码维护成本 运维成本 三、…

IDEA中新建找不到Vue Component | IDEA右键Create New Servlet找不到Setvlet

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 解决&#xff1a;IDEA中新建找不到Vue Component 打开IDEA&#xff0c;依次打开 &#xff08;文件——设置——编辑器——文件或代码模板&#xff09; 找到右侧&#…

Spring—Spring AOP1

文章目录AOP概念的引入AOP相关的概念1.AOP的概述2. AOP的优势3. AOP的底层原理如何利用AOP对原有业务进行增强利用注解方式切入点表达式AOP相关的术语————————————————————————————————AOP概念的引入 首先我们来看一下登录的原理 如上图所示这…