题目:
原题链接: https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
解题思路:
没的说,二分查找
找到后,对mid进行左右平移查找首尾下标
代码实现:
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
left, right = 0, len(nums) - 1
mid = (left + right) // 2
while left <= right:
if nums[mid] == target:
left, right = mid, mid
while left > 0 and nums[left] == nums[left - 1]:
left -= 1
while right < len(nums) - 1 and nums[right] == nums[right + 1]:
right += 1
return [left, right]
elif nums[mid] > target:
right = mid - 1
else:
left = mid + 1
mid = (left + right) // 2
return [-1, -1]