(算法)二分查找心得

本文详细介绍了二分查找的原理和应用,包括查找第一个大于等于特定值的元素下标、查找第一个小于等于特定值的元素下标、查找目标元素第一次出现的位置以及最后一次出现的位置。同时,对比了左闭右闭和左闭右开两种方法的实现细节,旨在帮助读者掌握二分查找的精髓并能灵活应用。
摘要由CSDN通过智能技术生成

引言

力扣大概做了四百来道,但最近发现遇到二分的题目总是不敏感,而且做二分的思路不清晰,有时需要Debug来处理边界越界问题,这在面试手撕时非常不友好。于是乎想来总结下二分模版,希望日后遇到二分统统秒杀!

二分问题特点

总的来说,二分查找特点就是在有序区间内查找符合特定要求的元素,大体可以分三类:

  • 查找与特定值等值的元素下标;
  • 查找第一个大于等于特定值的元素下标;
  • 查找最后一个小于等于特定值的元素下标;
  • ......

从本质上看,二分问题思路十分简单,即在一个循环内不断地比较区域中间值与目标值的大小,根据区间的有序性,每次排除一半的候选元素。但二分问题的难度在于细节的处理上,这些细节包括边界处理、适应具体题目要求的变化等。个人觉得,这些细节包括:

  • 左边界 left 、右边界 right 的初始值取 0 到 n - 1,还是 0 到 n ?
  • 循环的判定条件是 left < right 还是 left <= right
  • 具体的 if 条件该如何写?if 条件为真时,该更新 left 还是 right ?
  • 更新 left、right 时,mid 是否需要 ±1 ?
  • ......

 通过阅读与学习相关博客,本文将从找“下界”问题(即查找第一个大于等于特定值的元素下标)出发,总结二分查找的所有模版。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值