leetcode第78題:子集
https://leetcode-cn.com/problems/subsets
【題目】
給定一組不含重複元素的整數數組 nums,傳回該數組所有可能的子集(幂集)。
說明:解集不能包含重複的子集。
示例:
輸入: nums = [1,2,3]
輸出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
複制
【思路】
本題和【20T40-組合】比較類似,屬于遞歸的典型應用。
不太好解釋,要不直接看代碼?【哭笑】
【代碼】
python版本
class Solution(object):
def recursion(self, ls, nums, start, res):
for i in range(start, len(nums)):
tmp = copy.copy(ls)
tmp.append(nums[i])
res.append(tmp)
self.recursion(tmp, nums, i + 1, res)
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
res = [[]]
for i, n in enumerate(nums):
res.append([n])
self.recursion(ls=[n], nums=nums, start=i + 1, res=res)
return res
複制