代码随想录刷题记录1——二分查找

数组:

  • 701.二分查找

思路:

1.看到有序数组,且无重复元素,明确用二分法

2.二分法第一要义,考虑每个寻找区间统一用左闭右闭or左闭右开

3.跳出循环的条件:

  • 如果是左闭右闭的情况,那么跳出循环的条件就是left>right,因为左闭右闭的情况下left=right是有意义的,只有left>right才跳出去;
  • 如果是左闭右开的情况,那么跳出循环的条件就是left> =right,因为左闭右开的情况下left=right是没有意义的,所以只要到了left=right就可以跳出去

4.在while循环内部:

  • 如果是左闭右闭的情况,那么left和right重新赋值时,应该是left=mid+1,或者是right=mid-1,因为mid相当于已经考虑过了确实不是,而下一个寻找区间是左闭右闭,所以直接以mid+1或mid-1作为边界;
  • 如果是左闭右开的情况,那么left和right重新赋值时,应该是left=mid+1,或者是right=mid,因为mid相当于已经考虑过了确实不是,而下一个寻找区间是左闭右开,所以对right来说只有把边缘继续定为mid,下一个寻找区间才会包括mid-1在内,如果直接定为right=mid-1是取不到mid-1自身的

语法tips:

  • 获取数组长度:len = num.length 【没有括号】
  • 获取字符串长度:len=str.length() 【有括号】
  • 19
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值