【Leetcode】【简单】35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 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
解题思路:
- 看到排序数组基本就可以知道考察二分搜索了。
- 如果找到目标值,返回其索引,那么当
target == nums[mid],直接return mid;就可以了。 - 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。这等价于输出小于target的元素的数目。所以最后
return left;或return right;都可以。以下例子可以帮助理解:
对于 nums = [1.3.5.6], target = 2,其搜索过程如下:
- left = 0, right = 4, mid = 2, nums[mid] = 5, target<nums[mid], right = 2;搜索范围为 [0,4)
- left = 0, right = 2, mid = 1, nums[mid] =3, target<nums[mid] , right = 1;搜索范围为[0,2)
- left = 0, right = 1, mid = 0, nums[mid] = 1, nums[mid] < target ,left = 1;搜索范围为[0,1)
- left = right = 1, 结束循环
代码:
class Solution {public int searchInsert(int[] nums, int target) {return findTarget(nums, target);}int findTarget(int[] nums, int target){int left = 0, right = nums.length;while(left < right){int mid = left + (right - left)/2;if(target == nums[mid])return mid;else if(target < nums[mid])right = mid;else if(target > nums[mid])left = mid + 1;}return left; // return right;}
}
测试结果:

相关文章:
【Leetcode】【简单】35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入:…...
sql面试题
mysql优化 优化准则: 建表时:合理选择字段的类型,单表字段数量 sql查询尽量单表操作,避免复杂操作,复杂的多表通过java代码实现 构建复合索引优化,索引尽量可以覆盖主要业务查询 sql避免索引失效 避免大…...
SQL 进阶刷题笔记
SQL 进阶刷题笔记 一、MySQL 进阶 这里主要是 MySQL 刷题相关笔记,方便后面温习和查阅,希望可以帮到大家!!! 题1 请计算每张SQL类别试卷发布后,当天5级以上的用户作答的人数uv和平均分avg_score࿰…...
[网鼎杯 2020 朱雀组]Think Java
SqlDict.java ,其中sql语句处存在sql注入漏洞 package .sqldict;import cn.abc.core.sqldict.Row; import cn.abc.core.sqldict.Table; import java...
AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告AIR32F103(二) Linux环境和LibOpenCM3项目模板AIR32F103(三) Linux环境基于标准外设库的项目模板AIR32F103(四) 27倍频216MHz,CoreMark跑分测试AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码AIR32F103(六) ADC,I2S…...
SpringBoot接口 - 如何统一异常处理
SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢?为什么要优雅的处理异常如果我们不统一的处理异常,经常会在controller层有大量的异常…...
如何使用Python进行数据可视化
数据可视化是一种将数据呈现为图形或图表的技术,它有助于理解和发现数据中的模式和趋势。Python是一种流行的编程语言,有很多库可以帮助我们进行数据可视化。在本文中,我们将介绍使用Python进行数据可视化的基本步骤。 第一步:导…...
vue -- 自定义指令钩子函数补充 自定义过滤器filter参数
自定义指令补充 自定义指令通过钩子函数的形式来实现自定义的功能 这里是几个常用的钩子函数以及它的方法: bind:只调用一次,指令第一次绑定到元素时调用,在这里可以进行一次性的初始化设置。 inserted:被绑定元素插…...
Qt不会操作?Qt原理不知道? | Qt详细讲解
文章目录Qt界面开发必备知识UI界面与控件类型介绍Qt设计器原理控件类型的介绍信号与槽机制处理常用控件创建与设置常见展示型控件创建与设置常见动作型控件创建与设置常见输入型控件创建与设置常见列表控件创建于设置Qt中对象树的介绍项目源码结构刨析.pro.hmain.cpp.cppQt界面…...
LeetCode-面试题 17.05. 字母与数字【前缀和,哈希表】
LeetCode-面试题 17.05. 字母与数字【前缀和,哈希表】题目描述:解题思路一:前缀和。数字为-1,字母为1。我们需要找到的子数组是前缀和之差为0的,例如s[right]-s[left]0,那么s[right]s[left],变为…...
华为OD机试题 - 叠放书籍(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:叠放书籍题目输入输出示例一输入输出Code解题思路版权说明华为O…...
【数据库概论】第十一章 数据库并发控制
第十一章 并发控制 在多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务并行运行,这就是同时并发方式。当多个用户并发存取数据库时会产生多个事务同时存取同一事务的情况,如果…...
Nginx配置实例-反向代理案例二
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口服务 nginx监听端口为9000, 访问 http://127.0.0.1:9000/edu/ 直接跳转到127.0.0.1:8080 访问 http://127.0.0.1:9000/vod/ 直接跳转到127.0.0.1:8081 一、准备工作 1. 准备两个tom…...
HTML 字符集
为了正确显示 HTML 页面,Web 浏览器必须知道要使用哪个字符集。 从 ASCII 到 UTF-8 ASCII 是第一个字符编码标准。ASCII 定义了 128 种可以在互联网上使用的字符:数字(0-9)、英文字母(A-Z)和一些特殊字符…...
【C语言】每日刷题 —— 牛客语法篇(3)
前言 大家好,继续更新专栏c_牛客,不出意外的话每天更新十道题,难度也是从易到难,自己复习的同时也希望能帮助到大家,题目答案会根据我所学到的知识提供最优解。 🏡个人主页:悲伤的猪大肠9的博客…...
基于Vue3和element-plus实现一个完整的登录功能
先看一下最终要实现的效果:登录页面:注册页面:(1)引入element-plus组件库引入组件库的方式有好多种,在这里我就在main.js全局引入了.npm i element-plus -Smain.js中代码:import { createApp } from "vue"; //element-plus import ElementPlus from "element-pl…...
【java】Java 中泛型的实现原理
文章目录前序1. 泛型1.1 泛型方法1.2 泛型类1.3 泛型接口2. 泛型的基本原理3. 小结前序 泛型是 Java 开发中常用的技术,了解泛型的几种形式和实现泛型的基本原理,有助于写出更优质的代码。本文总结了 Java 泛型的三种形式以及泛型实现原理。 1. 泛型 …...
【C++提高编程】C++全栈体系(二十七)
C提高编程 第五章 STL- 常用算法 三、常用排序算法 算法简介: sort //对容器内元素进行排序random_shuffle //洗牌 指定范围内的元素随机调整次序merge // 容器元素合并,并存储到另一容器中reverse // 反转指定范围的元素 1. sort 功能描述&#…...
软考高级信息系统项目管理师系列之三十九:项目集管理
软考高级信息系统项目管理师系列之三十九:项目集管理 一、项目集管理内容二、项目集管理基础概述1.项目集定义2.项目集活动3.项目集管理三、项目集的管理过程四、项目集治理1.项目集治理概述2.项目集指导委员会的职责3.项目集治理功能五、项目集生命周期1.项目集生命周期三个阶…...
44-Golang中的channel
Golang中的channel为什么要使用channelchannel的介绍channel的基本使用定义/声明channel管道的遍历和关闭channel的关闭channel的遍历goroutine和channel结合应用实例1应用实例2案例注意事项为什么要使用channel 前面使用全局变量加锁同步来解决goroutine的通讯,但…...
RELION 5.0完整指南:从零开始掌握冷冻电镜数据处理利器
RELION 5.0完整指南:从零开始掌握冷冻电镜数据处理利器 【免费下载链接】relion Image-processing software for cryo-electron microscopy 项目地址: https://gitcode.com/gh_mirrors/re/relion RELION 5.0(REgularised LIkelihood OptimisatioN…...
将JSON文件作为Python的配置文件,读取和使用的写法
import osimport json#获取配置path os.getcwd() os.sep "config.json"conf Nonewith open(path, "r", encoding"utf-8") as f:if conf is None:conf json.loads(f.read())heard {"_token": f"{conf[token]}"}...
保姆级教程:从驱动安装到一键烧录,用JLink和JFlash给STM32烧程序(附常见连接失败解决方法)
从零玩转JLink与JFlash:STM32烧录全流程实战指南 第一次拿到JLink调试器时,我盯着那个黑色的小盒子看了足足五分钟——USB接口该插电脑哪一端?驱动安装失败怎么办?芯片型号选错会烧毁设备吗?作为过来人,我完…...
终极指南:如何一键解决所有Visual C++运行库缺失问题
终极指南:如何一键解决所有Visual C运行库缺失问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为"缺少MSVCP140.dll"、"找不…...
告别终端!为OpenWrt打造Web版脚本管家:Luci插件开发实战与全功能解析
1. 为什么我们需要Web版脚本管家? 每次在OpenWrt上折腾脚本都要打开终端,这对新手来说简直是噩梦。记得我第一次给路由器写脚本时,光是学会用vi编辑器就花了半小时,保存退出时还差点把系统搞崩。后来发现用WinSCP上传脚本还要改权…...
别再硬扛了!书匠策AI用大白话告诉你:毕业论文其实可以“拼“出来
各位还在跟毕业论文死磕的朋友们,今天这篇文章,可能会颠覆你对写论文的认知。 先问你一个问题:你写论文最痛苦的是什么?不是写不出来,而是——坐在电脑前三个小时,一个字都没憋出来。 别慌,今…...
163MusicLyrics:一站式跨平台歌词管理解决方案
163MusicLyrics:一站式跨平台歌词管理解决方案 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 当你在音乐海洋中遨游时,是否曾为找不到心仪歌曲的…...
集成测试实战
软件测试理论:https://blog.csdn.net/2402_88266590/article/details/160966638?spm1011.2415.3001.5331 单元测试实战:https://blog.csdn.net/2402_88266590/article/details/161017518?spm1001.2014.3001.5502 下面就开始进入集成测试的学习吧&…...
2026年计算机专业就业现状,不想35岁被淘汰?网络安全或许是程序员的最佳转型方向!
计算机专业虽进入分化阶段,但网络安全人才缺口达300万,高端领域供不应求。高校扩招与市场需求脱节导致供需失衡,未来"计算机行业"的复合型人才更具竞争力。建议早做规划,构建"T型能力体系",掌握前…...
c++生产者消费者者模式笔记-1阻塞问题
生产者消费者模式是并发编程的核心模式之一,核心是想要提高程序的运行效率。 这里记录一下自己的思考,使用通俗易懂的语言,和以日志记录为例,解读生产者消费者模式,并实现生产者消费者模式。 将生产者消费者模式的核心…...
