自学内容网 自学内容网

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)!