原题
https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/
思路
二分查找
复杂度
时间:O(log(n))
空间:O(1)
Python代码
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
if not nums:
return [-1, -1]
l, r = 0, len(nums)
while l < r:
mid = (l + r) // 2
if target == nums[mid]:
left, right = mid, mid
while left -1 >= 0 and nums[left - 1] == target:
left -= 1
while right + 1 <= len(nums) - 1 and nums[right + 1] == target:
right += 1
return [left, right]
elif target > nums[mid]:
l = mid + 1
else:
r = mid
return [-1, -1]
Go代码
func searchRange(nums []int, target int) []int {
if len(nums) == 0 {
return []int{-1, -1}
}
l, r := 0, len(nums)
for l < r {
mid := (l + r) / 2
if target == nums[mid] {
left, right := mid, mid
for left-1 >= 0 && nums[left-1] == target {
left--
}
for right+1 <= len(nums)-1 && nums[right+1] == target {
right++
}
return []int{left, right}
} else if target > nums[mid] {
l = mid + 1
} else {
r = mid
}
}
return []int{-1, -1}
}

被折叠的 条评论
为什么被折叠?



