簡體   English   中英

該powerset函數的時間復雜度是多少?

[英]What is the time complexity of this powerset function?

我從leetcode https://leetcode.com/problems/subsets/submissions/解決了這個問題(powerset函數),這是我的解決方案:

    def subsets(nums):
        res = []
        n = len(nums)
        for subset_id in range(2**n):
            tmp = []
            for index in range(n):
                if 1 << index > subset_id:
                    break
                if subset_id >> index & 1:
                    tmp.append(nums[index])
            res.append(tmp)
        return res

我很難分析這段代碼的時間復雜度,我認為if 1 << index > subset_id: break使它在O(n*2^n)但會一直下降到O(2^n) 我不知道這很難說。

如果我們假設內部循環在每次到達中break之前都要經過range(n)一半,那么它就是O(n/2*2^n) ,實際上仍然是O(n*2^n) 這適用於循環的任何固定部分,因此即使平均range(n)的十分之一而不是一半,它仍為O(n*2^n)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM