这两个电源设置功能在时间复杂度上有何不同?

时间:2019-04-29 16:46:34

标签: python-3.x algorithm set powerset

你好,我一直在尝试解决https://leetcode.com/problems/subsets/这是powerset函数。

我写了这两个不同的版本:

def subsets_hash(s):
    sets = set()
    sets.add(tuple(s))
    for i in range(len(s)):
        tmp_subsets = subsets_hash(s[:i] + s[i+1:])
        for subset in tmp_subsets:
            if subset not in sets:
                sets.add(subset)
    return sets

def subsets_array(s):
    sets = [s]
    for i in range(len(s)):
        tmp_subsets = subsets_array(s[:i] + s[i+1:])
        for subset in tmp_subsets:
            if subset not in sets:
                sets.append(subset)
    return sets

当我使用相同的输入对这2个对象进行计时时,我可以看到它们在计时方面确实很接近,但是从查看代码的角度来看,subsets_hash是否应该更快?

第二个for循环for subset in tmp_subsets:是在集合而不是列表上完成的,并且考虑到tmp_subsets增长到大小2^n(最终包含所有子集),我应该快一点由于集合所有权为2^n,因此第一个函数的系数为O(1)

欢迎大家澄清这一点。

0 个答案:

没有答案