classSolution: defsearchRange(self, nums: List[int], target: int) -> List[int]: n = len(nums) if n == 0: return [-1, -1] left = 0 right = n - 1
# 求左边界 while left <= right: mid = left + (right - left) // 2 if nums[mid] >= target: right = mid - 1 else: left = mid + 1 lr = left if left < n and nums[left] == target else -1
# 求右边界 left = 0 right = n - 1 while left <= right: mid = left + (right - left) // 2 if nums[mid] > target: right = mid - 1 else: left = mid + 1 rr = right if right < n and nums[right] == target else -1 return [lr, rr] if nums[lr] == nums[rr] else [-1, -1]
classSolution: defsearchRange(self, nums: List[int], target: int) -> List[int]: n = len(nums) if n == 0: return [-1, -1]
def_search(is_lower=False): left, right = 0, n - 1 while left <= right: mid = left + (right - left) // 2 if nums[mid] == target: if is_lower: right = mid - 1 else: left = mid + 1 elif nums[mid] > target: right = mid - 1 else: left = mid + 1 res = left if is_lower else right return res if res < n and nums[res] == target else -1