zoukankan      html  css  js  c++  java
  • leetcode 154

    153的进阶版, 原列表不是严格递增的, 相似, 增加更多的边界判断就可以, 但是极端情况下, 也就是列表中重复的数字过多可能会到O(n)的复杂度.

    class Solution:
        def findMinInRange(self, nums: List[int], start, end) -> int:
            if start == end:
                return nums[start]
            if nums[start] < nums[end]:
                return nums[start]
            elif nums[start] == nums[end]:
                mid = (start + end) // 2
                tmp = self.findMinInRange(nums, start, mid)
                if tmp < nums[start]:
                    return tmp
                return self.findMinInRange(nums, mid+1, end)
            while start < end:
                mid = (start + end) // 2
                if nums[start] > nums[mid]:
                    end = mid
                    continue
                elif nums[start] == nums[mid]:
                    if start == mid:
                        return min(nums[start], nums[end])
                    start = mid
                    continue
                else:
                    start = mid
                    continue
                    
        def findMin(self, nums: List[int]) -> int:
            len_nums = len(nums)
            result = self.findMinInRange(nums, 0, len_nums-1)
            return result
    
  • 相关阅读:
    MinkowskiPooling池化(上)
    稀疏张量基础
    稀疏张量网络
    英伟达TRTTorch
    闵可夫斯基引擎Minkowski Engine
    reactive和reactor
    today search
    today news 2020-8-8
    如何去写一本精品小书?
    today news
  • 原文地址:https://www.cnblogs.com/mangmangbiluo/p/15585450.html
Copyright © 2011-2022 走看看