题目:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
例如:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
思路
其实这个思路,可以看这个代码
# for i in nums:
# temp.append(i)
# res.append(temp[:])
# temp.pop()
# for i in range(size):
# temp.append(nums[i])
# for j in nums[i+1:]:
# temp.append(j)
# res.append(temp[:])
# temp.pop()
# temp.pop()
# for i in range(size):
# temp.append(nums[i])
# # print(temp)
# nums2 = nums[i+1:]
# for j in range(len(nums2)):
# temp.append(nums2[j])
# # print(temp)
# nums3 = nums2[j+1:]
# for k in nums3:
# temp.append(k)
# print(temp)
# res.append(temp[:])
# temp.pop()
# temp.pop()
# temp.pop()
# print(res)
最终代码
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
res = []
temp = []
size = len(nums)
def dfs(new_nums,i):
size = len(new_nums)
if i==0:
res.append(temp[:])
return
for k in range(size):
temp.append(new_nums[k])
dfs(new_nums[k+1:],i-1)
temp.pop()
for i in range(size+1):
dfs(nums,i)
return res