我有以下算法可以返回给定整数列表的幂集(幂集=所有可能的子集)。
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)中运行?还是呢?