トピック:
トピックリンク: https://leetcode-cn.com/problems/subsets-ii/
問題解決のアイデア:
「すべての可能性」= +プルーンバック
考えるためには、重複したサブセットが含まれている要素は、最初の文字を横断したかのように、トラバースするときので、あなたは同じ要素をスキップする必要があり、次の非繰り返しエレメントがバックトラックを継続使用しません
コードの実装:
class Solution:
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
def create_res(start, nums, res, path):
if start > len(nums):
return
for index in range(start, len(nums)):
if index > start and nums[index] == nums[index - 1]:
continue
path.append(nums[index])
res.append(path[:])
create_res(index + 1, nums, res, path)
path.pop()
nums.sort()
res = [[]]
create_res(0, nums, res, [])
return res