当前位置: 首页 > news >正文

leetcode刷题---二分查找

         力扣题目链接

        二分查找算法使用前提:有序数组;数组内无重复元素

        易错点

        1.while循环的边界条件:如到底是 while(left < right) 还是 while(left <= right)

        2.if条件后right,left的取值:到底是 right = middle - 1还是 right = middle 

        二者取决于区间的使用:是左闭右闭还是左闭右开,如左闭右闭区间,left == right 符合区间

因此while循环使用while(left <= right);if条件后right的取值,if nums[middle] > target,则nums[middle]一定取不到target,则right = middle - 1

from typing import List
class Solution:def search(self, nums: List[int], target: int) -> int:left, right = 0, len(nums) - 1  # 定义target在左闭右闭的区间里,[left, right]while left <= right:middle = left + (right - left) // 2if nums[middle] > target:right = middle - 1  # target在左区间,所以[left, middle - 1]elif nums[middle] < target:left = middle + 1  # target在右区间,所以[middle + 1, right]else:return middle  # 数组中找到目标值,直接返回下标return -1  # 未找到目标值#测试样例
nums = [-1,0,3,5,9,12]
target = -1
#创建对象
s =Solution()
#调用该方法
print(s.search(nums,target))

相关文章:

  • BGP联邦+反射器实验
  • HTML应用指南:利用POST请求获取全国圆通快递服务网点位置信息
  • 【时时三省】(C语言基础)使用字符串处理函数2
  • 车用CAN接口芯片:汽车神经系统的沉默构建者
  • 【Python 算法零基础 2.模拟 ④ 基于矩阵】
  • 鸿蒙OSUniApp 实现图片上传与压缩功能#三方框架 #Uniapp
  • c++和c的不同
  • Void: Cursor 的开源平替
  • Android 中 图片加载库 Glide 简介
  • 【Oracle专栏】扩容导致数据文件 dbf 丢失,实操
  • React 第四十节 React Router 中 useBeforeUnload的使用详细解析及案例说明
  • LeRobot 框架的核心架构概念和组件(中)
  • R语言机器学习算法实战系列(二十五)随机森林算法多标签分组分类器及模型可解释性
  • 机器视觉助力轨道缺陷检测
  • AR禁毒:科技赋能,筑牢防毒新防线
  • 【计算机视觉】OpenCV实战项目:GraspPicture 项目深度解析:基于图像分割的抓取点检测系统
  • 掌握Docker Commit:轻松创建自定义镜像
  • 双目云台摄像机:双摄安防功能全方位
  • 基于运动补偿的前景检测算法
  • [20250514] 脑机接口行业调研报告(2024年最新版)
  • 上海虹桥国际咖啡文化节周五开幕,来看Coffeewalk通关攻略
  • 制造四十余年血腥冲突后,库尔德工人党为何自行解散?
  • 王征、解宁元、牛恺任西安市副市长
  • GDP逼近五千亿,向海图强,对接京津,沧州剑指沿海经济强市
  • 图讯丨习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 技术派|更强的带刀侍卫:从054B型战舰谈谈世界护卫舰发展