def searchRange(nums: list[int], target: int) -> list[int]: n = len(nums) # 边界问题 1:提前处理空数组 if n == 0: return [-1, -1]
def binary_search_l(left, right, target): while left + 1 != right: mid = (left + right) // 2 if nums[mid] < target: left = mid else: right = mid # 边界问题 2:right 可能越界到达 n,需要先判断 right != n if right != n and nums[right] == target: return right return -1
def binary_search_r(left, right, target): while left + 1 != right: mid = (left + right) // 2 if nums[mid] <= target: left = mid else: right = mid # 边界问题 3:left 可能越界到达 -1,需要先判断 left != -1 if left != -1 and nums[left] == target: return left return -1