1. 二分的关键就是st和ed两个指针如何移动。需要记住的是,st只会往大的方向移动,ed只会往小方向移动。
  2. mid= st + (ed-st)/2 而不用 mid = (st + ed) / 2 是因为后面的情况当st+ed很大时可能会产生溢出。
  3. 注意避免死循环(一般就考虑最后两个数的极端情况):
    • 当 时,mid偏向左边(一般求小于等于target的数),所以st必须移动st = mid+1,否则就可能会死循环。
  1. 一般来说,如果是求恰好找到的,可以多加一个等于的时候退出
  2. 有时候,我们不好判断到底判断条件里<还是<=的时候,可以把条件限定在2个数A,B(一般来说,此时的mid = A)和target:
    • A(mid) < target,我们需要st还是ed移动
    • A(mid) = target,我们需要st还是ed移动