class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
left = self.binarySearch(nums, target, True)
right = self.binarySearch(nums, target, False)
return [left, right]
def binarySearch(self, nums: List[int], target: int, left_on_found: bool) -> int:
l, r = 0, len(nums) - 1
i = -1
while l <= r:
m = (l + r) // 2
current = nums[m]
if current == target:
i = m
if left_on_found:
r = m - 1
else:
l = m + 1
elif current >= target:
r = m - 1
else:
l = m + 1
return i
Common Mistakes / Things I Got Stuck On
Overcomplicated binary searches of target - 1 or target + 1