34. Find First and Last Position of Element in Sorted Array(Medium)
Given an array of integers
nums
sorted in ascending order, find the starting and ending position of a giventarget
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]
class Solution:
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
if target not in nums:return [-1,-1]
low = nums.index(target)
if nums.count(target) == 1:return [low,low]
target += 1
lo = low;hi = len(nums) -1
while(lo <= hi):
mid = (lo + hi) // 2
if nums[mid] >= target:hi = mid - 1
else:lo = mid + 1
return [low,hi]