[LeetCode]34. Search for a Range
34. Search for a Range
class Solution(object):
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
l, r = 0, len(nums)-1
while l <= r:
mid = (l + r) // 2
if nums[mid] == target:
j = i = mid
while i >= 1 and nums[i] == nums[i-1]:
i -= 1
while j <= len(nums)-2 and nums[j] == nums[j+1]:
j += 1
return [i, j]
elif nums[mid] < target:
l = mid + 1
else:
r = mid - 1
return [-1, -1]
class Solution(object):
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
if not nums:
return [-1, -1]
# 1.left most
l, r = 0, len(nums)
while l < r:
mid = (l + r) // 2
if nums[mid] < target:
l = mid + 1
else:
r = mid
l_index = l if 0 <= l < len(nums) and nums[l] == target else -1
# 2.right most
r = len(nums)
while l < r:
mid = (l + r) // 2
if nums[mid] > target:
r = mid
else:
l = mid + 1
r_index = l-1 if 0 <= l-1 < len(nums) and nums[l-1] == target else -1
return [l_index, r_index]
关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法

浙公网安备 33010602011771号