news 2026/5/2 13:13:14

算法训练营第一天|704.二分查找

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法训练营第一天|704.二分查找

一、今日学习的资源

题目链接:https://leetcode.cn/problems/binary-search/
视频讲解:https://www.bilibili.com/video/BV1fA4y1o715

二、自己看到题目的第一想法

看到题目时,首先注意到两个关键条件:一是升序有序数组,二是必须实现 O (log n) 时间复杂度。第一时间就想到了二分查找算法 —— 因为只有二分查找能在有序数组中以对数级复杂度高效查找,暴力遍历的 O (n) 复杂度完全不符合要求。

看到输入示例nums=[-1,0,3,5,9,12]target=9,直观判断核心是通过不断缩小查找范围定位目标:先找数组中间元素,和目标值比较后,确定目标在左半区还是右半区,重复这个过程直到找到或确定不存在。

三、自己实现过程中遇到的困难

  • mid 计算溢出问题:最初写mid=(left+right)/2,测试小数组没问题,但想到题目中数组长度最大为 10000,若数组长度更大,left+right可能超出 int 类型范围,导致计算错误。后来改成mid=left+(right-left)/2,才解决了溢出隐患。
  • 循环边界条件混淆:一开始写while(left<right),测试示例 1 时出现错误。仔细分析后才明白,当left==right时,数组只剩一个元素,仍需判断是否为目标值,正确边界应该是while (left<=right)
  • 区间更新逻辑失误:最初写left=midright=mid,导致查找范围无法缩小,陷入死循环。后来明确规则:nums[mid]<target时,目标在右半区,需left=mid+1nums[mid]>target时,目标在左半区,需right=mid-1,才解决了这个问题。

四、代码实现与测试结果

代码实现

测试结果

五、今日收获心得

  1. 彻底掌握了二分查找的核心逻辑:有序是前提,对数复杂度是核心,理解了 “每次排除一半元素” 的高效性,也明白这种算法仅适用于有序数组,这是和暴力遍历最本质的区别。
  2. 学会了关注代码的鲁棒性,比如 mid 计算的防溢出处理,看似是小细节,却能避免严重的运行错误,这在实际开发中非常重要。
  3. 理清了二分查找的边界细节:循环条件left <= right、区间更新left = mid + 1right = mid - 1是固定搭配,理解背后的逻辑后,就不会死记硬背,能灵活应对类似的查找问题。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 18:36:56

如何用Tab-Resize实现浏览器多窗口高效布局管理

如何用Tab-Resize实现浏览器多窗口高效布局管理 【免费下载链接】tab-resize Split Screen made easy. Resize the CURRENT tab and tabs to the RIGHT into layouts on separate Windows. w/ Multi-monitor Support 项目地址: https://gitcode.com/gh_mirrors/ta/tab-resize…

作者头像 李华
网站建设 2026/4/16 7:06:13

WinFlexBison:Windows开发者必备的词法分析与语法生成工具

WinFlexBison&#xff1a;Windows开发者必备的词法分析与语法生成工具 【免费下载链接】winflexbison Main winflexbision repository 项目地址: https://gitcode.com/gh_mirrors/wi/winflexbison 你是否在Windows平台上开发编译器或解析器时&#xff0c;为缺少Flex和Bi…

作者头像 李华
网站建设 2026/4/16 3:48:40

图像融合评价指标解析:从余弦相关度到皮尔逊系数的实战应用

1. 图像融合评价指标入门指南 第一次接触图像融合质量评估时&#xff0c;我被各种专业术语搞得晕头转向。直到在项目里踩了几个坑才明白&#xff0c;这些数学公式背后其实藏着非常直观的视觉逻辑。想象你要把两张夜景照片合成一张&#xff1a;一张捕捉了灯光细节但暗部模糊&…

作者头像 李华
网站建设 2026/4/15 21:17:48

Java 日期处理工具类

&#x1f4c5; 从"能用"到"好用"一、问题诊断&#x1f534; 严重问题问题影响位置线程不安全SimpleDateFormat 非线程安全&#xff0c;多线程环境下会抛异常或数据错乱所有方法时区隐患未指定时区&#xff0c;服务器时区变更会导致时间错乱全局方法命名混乱…

作者头像 李华
网站建设 2026/4/16 4:32:09

Fan Control终极指南:Windows风扇智能控制系统完全配置手册

Fan Control终极指南&#xff1a;Windows风扇智能控制系统完全配置手册 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…

作者头像 李华
网站建设 2026/4/15 16:31:38

深度解析HM3D数据集:1000个真实室内场景如何推动具身AI革命

深度解析HM3D数据集&#xff1a;1000个真实室内场景如何推动具身AI革命 【免费下载链接】habitat-matterport3d-dataset This repository contains code to reproduce experimental results from our HM3D paper in NeurIPS 2021. 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华