二分法:
二分法的时候难买出现各种各样的小bug,小到找了好几遍都找不到错在哪里?
那么哪里是需要我们警惕的呢?
1、不再单独使用字母 l ,相信我,在有的时候,我们菜鸟是发现不了 l 和 1 的区别的时候(在这里显示的却很清楚)
l
1
那上面的如果没有颜色的差别,不知道大家,反正我是分不清的。。
2、我们看下面的一段代码,是力扣上面的一道题,可能大佬一看就知道哪里错了,但是我是搞了半天没发现我哪里有问题,去看大家的题解才发现,我错哪里了,问题是啥呢?大家先看看
class Solution:
def mySqrt(self, x: int) -> int:
light,right,ans = 0,x,-1
while light < right:
mid = (light+right) // 2
if mid * mid <= x:
ans = mid
light = mid + 1
else:
right = mid - 1
return ans
→相信聪明的你肯定早就发现了,问题就在于while 判断的时候,少了一个 = (等号),结果浪费了好几分钟