查找整数列表的幂集的运行时复杂度

时间:2018-07-10 02:22:31

标签: algorithm recursion time-complexity subset

我有以下算法可以返回给定整数列表的幂集(幂集=所有可能的子集)。

class Solution:
    def subsets_recursive(self, nums):
        """
        O(2^n). Space O(1)
        :type nums: List[int]
        :rtype: List[List[int]]

        Given a set of distinct integers, nums, return all possible subsets (the power set).
        Note: The solution set must not contain duplicate subsets.

        Example:

        Input: nums = [1,2,3]
        Output:
        [
          [3],
          [1],
          [2],
          [1,2,3],
          [1,3],
          [2,3],
          [1,2],
          []
        ]

        """
        # [1,2,3], [ [],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3] ]
        res = []
        self.generateSet(nums, 0, res, [])
        return res

    def generateSet(self, nums, startingPos, res, subRes):
        res.append(subRes[:])
        for i in range(startingPos, len(nums)):
            subRes.append(nums[i])
            self.generateSet(nums, i + 1, res, subRes)
            subRes.pop()

现在,我正在尝试弄清楚此递归回溯算法的运行时复杂性是什么。我碰巧知道,对于n个数字,其幂集中有2 ^ n个成员。但这与说这种特定算法在O(2 ^ n)中运行不同。

那么,如何显示该特定算法也可以在O(2 ^ n)中运行?还是呢?

0 个答案:

没有答案