35. 搜索插入位置

news/2024/11/20 10:40:43/

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

请必须使用时间复杂度为 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-1if(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.ppmy.cn/news/5501.html

相关文章

vpp process类型节点调度过程

vpp节点类型 VLIB_NODE_TYPE_PROCESS&#xff1a;process类型节点可以被挂起也可以被恢复&#xff0c;main线程上调度 &#xff08;免费订阅,永久学习&#xff09;学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂 process节点注册 pro…

著作权范围大于版权?如何进行著作权查询?

我们知道&#xff0c;创作者申请著作权是保护自己版权的重要措施&#xff0c;著作权就是平常我们口中所说的版权。随着社会发展&#xff0c;对于著作权的重视增加&#xff0c;侵权行为也逐渐减少。那么著作权的具体内涵是什么&#xff0c;国家著作权怎样查询? (一)国家著作权…

HDFS教程(一)

目录 1. HDFS 简介 2. HDFS 节点 2.1 HDFS Master 节点&#xff08;Namenode&#xff09; 2.2 HDFS Slave 节点&#xff08;Datanode&#xff09; 3. HDFS 特性 3.1 分布式存储 3.2 高可用 3.3 可扩展性 3.3 高吞吐量 1. HDFS 简介 HDFS&#xff08;Hadoop Distribute…

容器云的双活与灾备技术

在多中心多云环境下&#xff0c;可将容器云部署为多活和灾备模式&#xff0c;通过全局负载均衡器实现应用的多中心多活与灾备。容器应用跨数据中心的双活&#xff0c;是将一个应用的不同副本部署到不同的数据中心&#xff0c;如图 1 所示的 Database 应用。 图1 Database应用双…

String类介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一.String类的简单解释二.String类的方法介绍2.1 字符串的声明2.2 字符串的比较第一种比较方法第二种的比较方式第三种比较方式第四种比较的方式2.3字符串的查找…

List 取出差异项

一、 if (ediVbapAndEdiMaras.Count ! changedData.Count) { for (int i 0; i < changedData.Count; i) { posnr changedData[i].POSNR; for (int j 0; j < ediVbapA…

单例模式及其线程安全问题

目录 ​ 1.设计模式 2.饿汉模式 3.懒汉模式 4.线程安全与单例模式 1.设计模式 设计模式是什么? 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案 这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的 单例模式的作用就是保证某个…

总线一:IIC

一、I2C集成电路总线, 多用于主控制器和从器件间的主从通信。 二、适用场景&#xff1a;在小数据量场合使用&#xff0c;传输距离短。 三、IIC是半双工。IIC的物理层&#xff1a;两条总线线路&#xff0c;一条是串行数据线SDA&#xff0c;一条是串行时钟线SCL&#xff0c;当总…