题目描述
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
1 | 输入: nums = [1,2,3] |
分析
其实是非常简单的一个递归回溯的过程。
假设输入是1、2、3、4
,递归的过程是:
1 | 1 |
而按照回溯的步骤去走一定是不会重复的。
综合答案为:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24class Solution(object):
def __init__(self):
self.result_all = None
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
self.result_all = []
self.dfs(nums, 0, 0, [])
return self.result_all
def dfs(self, nums, n, start, result):
self.result_all.append(result[:])
if len(nums) == n:
return
for i in range(start, len(nums)):
result.append(nums[i])
self.dfs(nums, n + 1, i + 1, result)
result.pop()
return