LeetCode
LeetCode 34 Find First And Last Position Of Element In Sorted Array - Medium
34. Find First and Last Position of Element in Sorted Array
34. Find First And Last Position Of Element In Sorted Array — Medium
Problem
- Find First and Last Position of Element in Sorted Array
Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1].
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]
Solution
class Solution:
def searchRange(self, nums, target):
if not nums:
return [-1, -1]
return [self.searchFirst(nums, target), self.searchLast(nums, target)]
def searchFirst(self, nums, target):
start, end = 0, len(nums) - 1
while start + 1 < end:
mid = int((start + end) / 2)
if nums[mid] == target:
end = mid
elif nums[mid] < target:
start = mid + 1
else:
end = mid - 1
if nums[start] == target:
return start
if nums[end] == target:
return end
return -1
def searchLast(self, nums, target):
start, end = 0, len(nums) - 1
while start + 1 < end:
mid = int((start + end) / 2)
if nums[mid] == target:
start = mid
elif nums[mid] < target:
start = mid + 1
else:
end = mid - 1
if nums[end] == target:
return end
if nums[start] == target:
return start
return -1