二分法各种边界,大彻大悟

1要考虑四个角度的“边界”,如下图 

 242c1202cebe4d729cdc5e4900efdc16.jpg

 

2 先考虑角度a的第一种情况

如下图所示,对于左边的情况,因为当l=3,r=4的时候,mid等于3,已知target=4, 如果l=mid就陷入死循环,所以l。右边同理。

12224d36497045c9859aec4d4e0dc1ea.jpg

 判断c1 c2的影响,可以参考下边的12个数轴,紫色荧光笔是对应的mid,  x就是target,有无表示数组中有没有目标值。经过分析就可以得出上述表格后两行,会发现,不管c1还是c2都不能准确判断有无目标值。因为结果都是while正常结束,l等于r,却可能有也可能没有变量。

3. 所以采取a2,对于a2,同样为了避免死循环,会发现l,r更新只能采取c2方式

4.并且依然是通过数轴算可能的六种情况,发现,7a167631ef4440f983e96ec3a50b0907.jpg

 不仅可以准确判断有无变量,并且可以准确的返回对应的变量索引或者变量区间。

向上向下取整本质是一样的,因为他其实就只是做了一个镜像,所以无所谓

 

我真的觉得太合理了,虽然方法有些笨拙,且不排除哪里粗心算错了,如有朋友发现,欢迎指出。

 

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值