力扣题库第35题-搜索插入位置

news/2025/3/4 22:22:57/文章来源:https://www.cnblogs.com/wephiles/p/18751635

题目描述

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 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

解析

题目要求我们使用时间复杂度为O(log2n)的算法,那就不能简单粗暴的进行遍历了,根据题目的数组是有序的,我们能够很容易想到使用二分法查找数据,如果我们找到middle偏移的元素等于target,那么我们就可以直接返回middle,如果没有找到元素,只要在退出循环的时候直接返回left的值就可以了。因为非常简单,这里不做过多赘述!

直接看代码:

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:# 显然,需要使用二分查找left= 0right= len(nums) -1while left <= right:middle = (left + right) // 2   # 中间索引if nums[middle] == target:return middleif nums[middle] > target:right = middle - 1if nums[middle] < target:left = middle + 1if left > right:return left

总结

一个小知识点:如果数组是有序的,那么在查找的时候可以使用二分查找法,时间复杂度为O(log2n)!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm添加conda环境的解释器时找不到python.exe

pycharm添加conda环境的解释器时找不到python.exe 先找到 anaconda 安装目录下的 condabin/conda ,然后加载环境, 加载之后下面就有了conda环境,可以进行选择

md5.exe WriteUp

WriteUp 题目信息 名称:md5.exe 分类:Reverse 描述:找到程序的flag题目链接: https://pan.baidu.com/s/1u8bGbKcUF6_gLaw63L3jyA?pwd=h8r5 提取码: h8r5解题思路 首先用DIE查看该文件,发现该文件没有壳,且是32位exe文件。所以可以直接用32位IDA打开该文件,并按F5对main函…

xor.exe WriteUp

WriteUp 题目信息 名称:xor.exe 分类:Reverse 描述:找到程序的flag题目链接: https://pan.baidu.com/s/1u8bGbKcUF6_gLaw63L3jyA?pwd=h8r5 提取码: h8r5解题思路 首先用DIE查看该文件,发现该文件没有壳,且是32位exe文件。所以可以直接用32位IDA打开该文件,并按F5对main函…

原型链图

啥都不说,先上图:上面展示了各个对象之间是怎样通过显式原型(prototype)及隐式原型([[prototype]],通过__proto__访问)来串联起来的。

【C++库函数】C++生成高质量随机数的方法

#include <iostream> #include <random>int main() {// 第一步:初始化真随机种子(使用硬件熵源)std::random_device rd; // 第二步:选择高性能引擎(推荐 mt19937)std::mt19937 gen(rd()); // 用 random_device 的输出来种子初始化引擎// 第三步:定义分布(…

20250305

1 烧碱的C浪回调后 开始布局中线多单。

玄机靶场通关(持续更新)

穷,没钱开靶场,全是看网上WP尝试自学。 你这应急响应,还真是高高在上呢……玄机靶场通关 全部要VIP,所以穷鬼我要看别人的WP来学 Windows应急-应急与研判训练计划一 服务器场景操作系统 Windows 服务器账号密码 administrator P@ssw0rd 题目来源公众号 ©州弟学安全 任…

代码在线运行工具网站神器——OneCompiler,程序员必备!

今天给大家分享一款功能强大的代码在线运行工具网站——OneCompiler,它可以让你轻松实现代码的编写、运行和分享。 网址 OneCompiler目前已经被收录在【3M万能在线工具箱】的【编程开发】工具中,这里也提供大家直接的网址: OneCompiler:https://onecompiler.com/ 支持70多种…

OV5640摄像头驱动学习

简介: OV5640的功能框架如图:增益放大器(AMP)以及ISP等可以通过寄存器(registers)来配置,配置寄存器的接口就是SCCB接口,该接口协议兼容IIC协议。 SCCB (Serial Camera Control Bus)串行摄像头控制总线。该总线控制着摄像头大部分的功能,包括图像数据格式、分辨率以…

基于PID控制器的双容控制系统matlab仿真

1.课题概述 基于PID控制器的双容控制系统matlab仿真,仿真输出PID控制下的水位和流量两个指标。2.系统仿真结果 (完整程序运行后无水印) 3.核心程序与模型 版本:MATLAB2022a% 绘制结果图形 t1 = 0:1:times; t2 = 0:1:(times-1); hmax = 23*ones(1,times); % 硬约…

【APP逆向37】hook失败之ptrace占坑

现象使用attach方式hook,frida -UF -l hook.js原因unable to access process with pid 17124 due to system restrictions; try `sudo sysctl kernel.yama.ptrace_scope=0`, or run Frida as root这是ptrace占坑的标志。ptrace可以让一个进程监视和控制另一个进程的执行,并且…

AI训练进行web前后端开发协助

周五我们进行了针对web开发辅助的ai训练,以下是训练过程: 首先我搭建好了环境 然后我根据编程习惯将web前后端分成了这几点:之后我就将其丢给了deepseek,它直接帮我生成了上到mysql表格建立,下到前端jsp页面的所有文件, 哎,这之前怎么没觉得ai这么好用啊,要是用上这种开…