力扣刷题——二分查找

  • 数组是存放在连续内存空间上的相同类型数据的集合
  • 数组下标都是从0开始的
  • 数组内存空间的地址是连续的
  • 正是因为数组在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。

使用二分查找法返回的元素下标可能不是唯一的,这些都是使用二分法的前提条件

左闭右开

while (left < right),这里使用 < ,因为left == right在区间[left, right)是没有意义的 if(nums[middle] > target) right 更新为middle,因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle,即:下一个查询区间不会去比较nums[middle]

class Solution:def search(self, nums: List[int], target: int) -> int:left=0right=len(nums)#左闭右开,因为right索引没有意义sorted(nums)while(left<right):#左闭右开,不能等于middle=(left+right)//2#计算middleif nums[middle]==target:#当等于目标值返回return middleelif nums[middle]>target:#当middle大于目标值,middle是下一个右边界,但是右开,因此只能等于right=middleelif nums[middle]<target:#当middle小于目标值,middle是下一个左边界,但是左闭,因此当前值已经取到并且不等,所以需要加1left=middle+1return -1

左闭右闭

while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1

class Solution:def search(self, nums: List[int], target: int) -> int:left=0right=len(nums)-1#左闭右闭sorted(nums)while(left<=right):#左闭右闭,可以等于middle=(left+right)//2#计算middleif nums[middle]==target:#当等于目标值返回return middleelif nums[middle]>target:#当middle大于目标值,middle是下一个右边界,但是右闭,因此当前值已经取到并且不等,所以需要减1right=middle-1elif nums[middle]<target:#当middle小于目标值,middle是下一个左边界,但是左闭,因此当前值已经取到并且不等,所以需要加1left=middle+1return -1

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

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

相关文章

黑群晖NAS部署DeepSeek模型与内网穿透实现本地AI服务

文章目录 前言1.安装Container Manager2. 启动ssh功能3. ssh连接黑群晖4. 安装Ollama5. 安装deepseek模型6. 安装open-webui图形界面7. 安装内网穿透7.1 下载cpolar套件7.2 配置群辉虚拟机7.3 配置公网地址小结 7.4 配置固定公网地址 总结 前言 在追求自建网络存储方案的极客群…

Rust 学习笔记:处理任意数量的 future

Rust 学习笔记&#xff1a;处理任意数量的 future Rust 学习笔记&#xff1a;处理任意数量的 future竞争的 future将控制权交给运行时构建我们自己的异步抽象 Rust 学习笔记&#xff1a;处理任意数量的 future 当两个 future 切换到三个 future 时&#xff0c;我们也必须从使用…

2025年TCP洪水攻击防护实战全解析:从协议对抗到AI智能防御

一、2025年TCP洪水攻击的新特征与挑战 AI驱动的自适应攻击 攻击者利用生成式AI动态调整SYN报文特征&#xff08;如载荷内容、发送频率&#xff09;&#xff0c;使攻击流量与正常业务流量的差异率低至0.5%&#xff0c;传统基于规则引擎的防御策略完全失效。 混合协议打击常态化…

二、集成开发环境(IDE)

上节我们在终端演示了python虚拟环境的用法&#xff0c;但终端不方便代码编写和调试&#xff0c;本节介绍两种常用的python集成开发环境&#xff1a;Pycharm和Jupter Notebook。Pycharm是最流行的Python IDE&#xff0c;下载网址&#xff1a;下载 PyCharm&#xff1a;JetBrains…

芯片电感需求趋势及选型关键因素

随着AI产业的快速发展&#xff0c;数据中心、AI芯片、服务器等算力基础设施对于芯片电感等电子元件的要求不断提升。另一方面&#xff0c;电子产品向高功率密度和小型化方向发展&#xff0c;电源模块趋于小型化、低电压、大电流&#xff0c;也对芯片电感提出了小型化、轻量化、…

Vue3+Element Plus表单验证实战:从零实现用户管理

前言 在Vue3项目开发中&#xff0c;表单验证是保证数据完整性和准确性的重要环节。Element Plus作为Vue3的流行UI组件库&#xff0c;提供了强大的表单验证功能。本文将基于一个用户管理模块的实战案例&#xff0c;详细介绍Vue3中如何使用Element Plus实现完整的表单验证流程。…

力扣上C语言编程题:合并区间(涉及数组)

一. 简介 本文记录力扣网上涉及数组方面的编程题&#xff0c;主要以 C语言实现。 二. 力扣上C语言编程题&#xff1a;合并区间&#xff08;涉及数组&#xff09; 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所…

SEO长尾词与关键词优化实战

内容概要 在SEO优化体系中&#xff0c;核心关键词与长尾词的协同作用直接影响流量获取效率与用户触达精度。本文将从基础概念切入&#xff0c;系统梳理核心关键词的筛选标准与竞争强度评估方法&#xff0c;并深入探讨长尾词在细分场景下的价值定位。通过分析用户搜索行为与意图…

博图SCL语言教程:灵活加、减计数制作自己的增减计数器(CTUD)

博图SCL语言教程&#xff1a;使用SCL实现增减计数器(CTUD) 一、什么是增减计数器(CTUD)&#xff1f; 增减计数器&#xff08;Up-Down Counter&#xff09;是PLC编程中的基础功能块&#xff0c;具有以下特性&#xff1a; CU (Count Up)&#xff1a;上升沿触发计数值增加 CD (…

Android 应用被kill问题排查和处理

一、背景 博主有一款应用市场应用,同样的应用,在Android 10上开启三个下载正常,在Android 14上开启下载安装,很频繁被kill。首先想到的是,是不是应用内存太高,导致被kill,通过工具分析内存也不高,后面就想到是不是系统本身分配给应用的内存就不高,后来通过排查,确实是和系统的…

从代码学习深度强化学习 - 多臂老虎机 PyTorch版

文章目录 前言创建多臂老虎机环境多臂老虎机算法基本框架(基类)1. ε-贪心算法 (Epsilon-Greedy)2. 随时间衰减的ε-贪婪算法 (Decaying ε-Greedy)3. 上置信界算法 (Upper Confidence Bound, UCB)4. 汤普森采样算法 (Thompson Sampling)总结前言 欢迎来到“从代码学习深度强化…

Android学习之Window窗口

Android Window机制学习笔记 在使用Window Flag实现界面全屏功能时&#xff0c;发现自身对Android Window机制缺乏系统认知&#xff0c;因此进行了专项学习与整理。 本文主要参考以下优质资料&#xff1a; Android的Window详解Android官方Window文档 Window基本概念 1. Win…

华为云 Flexus+DeepSeek 征文|搭建部署Dify-LLM推理引擎,赋能AI Agent智能体实现动态联网搜索能力

华为云 Flexus 云服务器 X 实例专门为 AI 应用场景设计。它提供了强大的计算能力&#xff0c;能够满足 DeepSeek 模型以及后续搭建 AI Agent 智能体过程中对于数据处理和模型运行的高要求。在网络方面&#xff0c;具备高速稳定的网络带宽&#xff0c;这对于需要频繁联网搜索信息…

Python 100个常用函数全面解析

Python 100个常用函数全面解析 1. 类型转换函数 1.1 int() 将字符串或数字转换为整数。 # 基本用法 int(123) # 123 int(3.14) # 3# 指定进制转换 int(1010, 2) # 10 (二进制转十进制) int(FF, 16) # 255 (十六进制转十进制)# 临界值处理 int() # ValueError: …

分享在日常开发中常用的ES6知识点【面试常考】

前言 在日常的业务开发中&#xff0c;可以熟悉运用掌握的知识点快速解决问题很重要。这篇分享JS相关的知识点&#xff0c;主要就是对数据的处理。 注意&#xff1a;本篇分享的知识点&#xff0c;只是起到一个抛砖引玉的作用&#xff0c;详情的使用和更多的ES6知识点还请参考官…

CHI协议验证中的异常及边界验证

CHI协议验证中的异常及边界验证 针对 CHI 协议的错误注入工具、覆盖率衡量方法及实际项目中的投入平衡 CHI 协议作为多核系统中复杂的缓存一致性协议,验证其行为需要强大的工具和方法来执行错误注入和边界条件测试,并衡量测试覆盖率。以下详细讨论常用工具、覆盖率评估方法及…

技术专栏|LLaMA家族——模型架构

LLaMA的模型架构与GPT相同&#xff0c;采用了Transformer中的因果解码器结构&#xff0c;并在此基础上进行了多项关键改进&#xff0c;以提升训练稳定性和模型性能。LLaMA的核心架构如图 3.14 所示&#xff0c;融合了后续提出的多种优化方法&#xff0c;这些方法也在其他模型&a…

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…

Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)

前言 在现代微服务与事件驱动架构&#xff08;EDA&#xff09;中&#xff0c;事件总线&#xff08;EventBus&#xff09; 是实现模块解耦与系统异步处理的关键机制。 本文将以 Go 语言为基础&#xff0c;从零构建一个高性能、可扩展的事件总线系统&#xff0c;深入讲解&#…

npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js`

npm install 报错如下, npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @biomejs/biome@1.9.4 postinstall script. npm ERR! This is pro…