|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def lower_bound(nums: List[int], target: int) -> int:
- left, right = 0, len(nums) - 1 # 闭区间 [left, right]
- while left <= right: # 区间不为空
- # 循环不变量:
- # nums[left-1] < target
- # nums[right+1] >= target
- mid = (left + right) // 2
- if nums[mid] < target:
- left = mid + 1 # 范围缩小到 [mid+1, right]
- else:
- right = mid - 1 # 范围缩小到 [left, mid-1]
- return left
复制代码- class Solution:
- def searchRange(self, nums: List[int], target: int) -> List[int]:
- start = lower_bound(nums, target) # 选择其中一种写法即可
- if start == len(nums) or nums[start] != target:
- return [-1, -1] # nums 中没有 target
- # 如果 start 存在,那么 end 必定存在
- end = lower_bound(nums, target + 1) - 1
- return [start, end]
复制代码
其中,是什么情况?
- end = lower_bound(nums, target + 1) - 1
复制代码 又是什么情况 |
|