设 nums 为递增(非递减)数组,长为 n。
| 需求 | 写法 | 如果不存在 |
|---|---|---|
| ≥x 的第一个元素的下标 | lowerBound(nums,x) | 结果为 n |
| >x 的第一个元素的下标 | lowerBound(nums,x+1) | 结果为 n |
| <x 的最后一个元素的下标 | lowerBound(nums,x)−1 | 结果为 −1 |
| ≤x 的最后一个元素的下标 | lowerBound(nums,x+1)−1 | 结果为 −1 |
| 需求 | 写法 |
|---|---|
| <x 的元素个数 | lowerBound(nums,x) |
| ≤x 的元素个数 | lowerBound(nums,x+1) |
| ≥x 的元素个数 | n−lowerBound(nums,x) |
| >x 的元素个数 | n−lowerBound(nums,x+1) |
左闭右闭
L, R = 0, n - 1
while L <= R:
mid = (L + R) // 2
if nums[mid] >= target:
R = mid - 1
else:
L = mid + 1
return L