理解二分

103 阅读1分钟

二分查找,分两种

左闭右闭 [left, right]

  • 对应取值 l = 0, r = nums.length-1
  • 对应循环 while(l <= r) 因为左闭右闭,都需要能取的到

mid 不匹配的时候分两个半区

[left, mid-1]  [mid+1, right] 

这时取左右的时候 left = mid + 1, right = mid - 1

左闭右开 [left, right)

通常在查找边界值时使用比如 找到第一个大于xxx的值,找到第一个小于xxx的值

  • 对应初始值 l = 0, r = nums.length 因为右开,所以右侧不应该被取到
  • 对应循环 while(l < r)

mid 不匹配的时候分两个半区

[left, mid)  [mid+1, right)

这时取左右的时候 left = mid + 1, right = mid

可以拿这道题练手 704