Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
心路历程:
这道题最难的地方在于需要‘课题分离’,把查找出满足target的第一个元素的二分查找函数分离出来,然后再加一些细节即可。
解法:二分查找
class Solution:
def bisearch(self, nums, target):
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return left # 跳出循环的left恰好指到第一个目标数开始
def searchRange(self, nums: List[int], target: int) -> List[int]:
start = self.bisearch(nums, target)
if start == len(nums) or nums[start] != target:
return [-1, -1]
end = self.bisearch(nums, target + 1) - 1
return [start, end]
原文地址:https://blog.csdn.net/weixin_43483381/article/details/137927806
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!