【发布时间】:2018-06-23 23:55:19
【问题描述】:
我是堆栈溢出的新手。我希望这个问题符合指导方针。 谢谢!
class Solution:
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
start = self.firstGreaterEqual(nums, target)
if start==len(nums) or nums[start]!=target:
return [-1, -1]
return [start, self.firstGreaterEqual(nums, target+1)-1]
def firstGreaterEqual(self, nums, target):
lo, hi = 0, len(nums)
while lo<hi:
mid = (hi+lo)//2
if nums[mid]<target:
lo = mid + 1
else:
hi = mid
return lo
Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]
这个程序是搜索一个范围 link to the program 此解决方案具有最佳运行时间。 我发现很难理解其背后的逻辑。 它正在使用二进制搜索,但我没有完全理解它。
【问题讨论】:
标签: python search binary-search