【算法刷题日记】LeetCode 704 二分查找:从踩坑到通关

张开发
2026/5/4 10:42:10 15 分钟阅读
【算法刷题日记】LeetCode 704 二分查找:从踩坑到通关
刷题日期2026 年 4 月 13 日题目704. 二分查找今日学习参考优质文章https://blog.csdn.net/gitblog_01189/article/details/149853597讲解视频https://www.bilibili.com/video/BV1fA4y1o715一、看到题目的第一想法看到有序数组 查找目标 O (log n) 要求第一反应就是二分查找这是最标准的模板题。数组升序且无重复不用处理重复边界直接找等值下标即可。思路很清晰左右指针收缩区间取中间值比较不断缩小范围。本来以为几分钟就能写完没想到细节全是坑。二、实现过程中遇到的困难main 函数重复定义报错本地写了带 main 的测试代码直接提交到 OJ 后报错redefinition of main因为平台自带主函数不能重复定义。边界条件写错导致死循环 / 漏元素一开始循环用left right漏掉最后一个元素后来改成left right才正常。mid 计算溢出问题最开始写mid (left right) / 2担心大数相加溢出后来改成更安全的mid left (right - left) / 2。指针移动逻辑混乱一度把left mid、right mid导致区间无法收缩程序卡死。正确应该是目标更大 → 左边界移到mid 1目标更小 → 右边界移到mid - 1三、今日收获心得二分查找看似简单细节决定成败循环条件、mid 计算、边界移动三个地方错一个就会出 bug一定要形成固定模板。OJ 提交规范很重要在线判题只需要提交核心函数不要带头文件与 main 函数避免重复定义。算法思维提升理解了分治思想每次把问题规模减半时间复杂度从 O (n) 降到 O (log n)大数据量下效率提升非常明显。养成严谨编码习惯先想清楚区间定义再写代码写完手动走一遍样例能快速定位错误。四、C语言核心代码

更多文章