LOADING

加载过慢请开启缓存 浏览器默认开启

二分查找中的边界问题

防止溢出

mid = left + (right - left) / 2

空循环

对于mid, r, l都为int类型的循环:
mid = left + (right - left) / 2中,若right - left < 2mid始终等于left,陷入死循环
解决办法:r只可能为1,r=0不存在二分查找问题,mid = l + (r - l + 1) / 2

区间边界更新

每次迭代的区间边界更新分为两种情况:

  • 如果mid本身符合条件
    • 目标解在左区间,则r = mid
    • 目标解在右区间,则l = mid
  • 如果mid本身不符合条件
    • 目标解在左区间,则r = mid - 1
    • 目标解在右区间,则l = mid + 1