LeetCode34 在排序数组中查找元素的第一个和最后一个位置

LeetCode34 在排序数组中查找元素的第一个和最后一个位置,第1张

ans1,ans2 分别记录第一个和最后一个出现的位置,如果没有第一次出现的位置直接返回[-1,-1]

注意一下二分的细节就好 python写题是真的爽,多写多用

    def searchRange(self, nums: List[int], target: int) -> List[int]:
        if not nums:
            return [-1, -1]
        n = len(nums)
        a, b = 0, n - 1
        ans1, ans2 = -1, -1
        while a <= b:
            mid = (a + b) // 2
            if nums[mid] >= target:
                ans1 = mid
                b = mid - 1
            else:
                a = mid + 1
        if ans1 == -1 or nums[ans1] != target:
            return [-1, -1]
        a, b = 0, n - 1
        while a <= b:
            mid = (a + b) // 2
            if nums[mid] <= target:
                a = mid + 1
                ans2 = mid
            else:
                b = mid - 1

        return [ans1, ans2]

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/728056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存