Given a set of distinct integers, S, return all possible subsets.
Note:
- Elements in a subset must be in non-descending order.
- The solution set must not contain duplicate subsets.
For example,
If S = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
给定一个数列,要求返回所有子集~
class Solution:
# @param S, a list of integer
# @return a list of lists of integer
def subsets(self, S):
if S is None or len(S) == 0: return [[]]
S.sort()
pre_subsets = self.subsets(S[1:])
return pre_subsets + [[S[0]] + elem for elem in pre_subsets]
还有非递归解法~
class Solution:
# @param S, a list of integer
# @return a list of lists of integer
def subsets(self, S):
res = [[]]
for num in sorted(S):
len_res = len(res)
for sub_set in res[:len_res]:
res.append(sub_set + [num])
return res