请注意!!!!主要用来自己马克自己的笔记,不是最优解!!不是最优解!!不是最优解!!请不要喷我。。。
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
思路:正常回溯法暴力解决了。36ms。
0 ~ len(nums) 每个长度都回溯一遍。
还不习惯用python,注意复制list的方法~!
class Solution(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
def mysolution(nums,start,maxlen,numlist,res):
if len(numlist)==maxlen:
res.append(list(numlist)) #注意这里,list会改变。需要new一个新的放到res里面
return res
i = start
while i<len(nums):
numlist.append(nums[i])
res=mysolution(nums,i+1,maxlen,numlist,res)
numlist.pop()
i += 1
return res
maxlen = len(nums)
res = [[]]
i = 1
while i <= maxlen:
res=mysolution(nums,0,i,[],res)
i += 1
return res