二分查找总结

总结一下,二分查找可能有以下这些难点
  • 1.怎么想到使用二分查找?根据题目的提示,例如lgN时间复杂度有序数组查找满足XXX条件,二分可以使用的场景并不是一定要求有序,而是说,通过某一个条件判断,我们可以确定mid的左边或者右边所有的元素都一定不存在答案或者都一定存在答案,这样的话,再加上题目不要求我们输出所有满足条件的答案,那么就可以使用二分查找,这样讲可能会有些抽象,以leetcode-162体会一下。
  • 2.就是二分查找的一些细节了,
    • 2-1.left和right的选取,例如常见的选取有left=0,right=len - 1,left=0, right = len等等,while判断的时候
    • 2-2.while里面到底是left < right还是left <= right
    • 2-3.mid到底选左中位数(left + (right - left) / 2)还是右中位数(left + (right - left + 1) / 2)
    • 2-4.舍去一般元素到底是left=mid还是left=mid + 1,到底是right=mid还是right=mid-1
    • 2-5.退出while循环的时候到底是直接返回-1,还是返回left,还是返回right,还是需要额外进行判断。
  • 上面所说的这些所有的问题,你都确定自己能够完全准确无误的说出来那才证明二分查找掌握的差不多了,并不是每次二分查找的题目能够稀里糊涂的做出来,或者通过用例来慢慢的调整边界胡总是根本都写不出来,我想这些问题的出现都表明了对二分查找的上述细节都还是十分欠缺。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值