34. Find First and Last Position of Element in Sorted Array
Given an array of integers nums sorted in non-decreasing order, find the starting and ending position of a given target value
Example 1:
- Input:
nums = [5,7,7,8,8,10], target = 8 - Output:
[3,4]
Example 2:
- Input:
nums = [5,7,7,8,8,10], target = 6 - Output:
[-1,-1]
Example 3:
- Input:
nums = [], target = 0 - Output:
[-1,-1]
Constraints:
0 <= nums.length <= 10^5-10^9 <= nums[i] <= 10^9numsis a non-decreasing array.-10^9 <= target <= 10^9
Solution
class Solution:
def searchRange(self, nums: list[int], target: int) -> list[int]:
def find(first):
result = -1
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
result = mid
if first:
right = mid - 1
else:
left = mid + 1
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return result
return [find(True), find(False)]