pythonブラシleetcodeテーマ(34)
1807 ワード
78.サブセット
重複要素を含まない整数配列numsのセットを指定し、その配列の可能なすべてのサブセット(べき乗セット)を返します.
説明:解セットに重複するサブセットを含めることはできません.
例:
コード;
ぜんはいち
重複する数値のないシーケンスを指定し、可能なすべての配列を返します.
例:
重複要素を含まない整数配列numsのセットを指定し、その配列の可能なすべてのサブセット(べき乗セット)を返します.
説明:解セットに重複するサブセットを含めることはできません.
例:
: nums = [1,2,3]
:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
コード;
class Solution3(object):
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
# res = [[]]
# for num in nums:
# for temp in res[:]:
# x = temp[:]
# x.append(num)
# res.append(x)
# return res
#### the second method
#### , DFS
self.results = []
self.search(sorted(nums), [], 0)
return self.results
def search(self, nums, S, index):
if index == len(nums):
self.results.append(S)
return
self.search(nums, S + [nums[index]], index + 1)
self.search(nums, S, index + 1)
s = Solution3()
print(s.subsets([1,2,3]))
ぜんはいち
重複する数値のないシーケンスを指定し、可能なすべての配列を返します.
例:
: [1,2,3]
:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
コードは次のとおりです.class Solution(object):
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums) <= 1:
return [nums]
res = []
for i, num in enumerate(nums):
n = nums[: i] + nums[i+1 :]
for x in self.permute(n):
res.append([num] + x)
return res