二分细节的处理

本来了解了二分的思路以为自己会了,结果手撕代码的时候发现好多细节的处理不太熟悉。

1.while循环条件何时为right>=left,何时为right>left

 

 

 

 

2.a[mid]<target时right何时取mid-1何时取mid

还是上面所述闭区间开区间的问题,当闭区间时右边界可以取到,mid已经排除过,故r=mid-1,当开区间时右边界取不到故r=mid

3. mid值最好用 left+(right-1)/2求,因为用(left+tight)/2求时(left+right)的值容易溢出。

posted @ 2021-05-10 16:45  gb040015  阅读(60)  评论(0)    收藏  举报