二分查找,分两种
左闭右闭 [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