题目
给定一个含不同整数的集合,返回其所有的子集
注意事项
子集中的元素排列必须是非降序的,解集必须不包含重复的子集
您在真实的面试中是否遇到过这个题?
Yes
样例
如果 S = [1,2,3],有如下的解:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
挑战
你可以同时用递归与非递归的方式解决么?
标签
递归 优步 脸书
思路
水题,基础DFS。
代码
class Solution:
"""
@param: nums: A set of numbers
@return: A list of lists
"""
def __init__(self):
self.res_list = []
def dfs(self, subset, start_index, nums):
self.res_list.append(subset[:])
for i in range(start_index, len(nums)):
subset.append(nums[i])
self.dfs(subset, i + 1, nums)
subset.pop(-1)
def subsets(self, nums):
# write your code here
nums.sort()
self.dfs([], 0, nums)
return self.res_list