class Solution(object):
def subsetsWithDup(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
# 包含重复元素,是子集问题加上去重
# LC78与LC40的结合
result = list()
# 这种去重问题,必须对数组先排序,让重复的可以挨着
nums.sort()
self.backtracking(nums, result, 0, [])
return result
def backtracking(self, nums, result, start, path):
result.append(path[:])
if start == len(nums):
return
for i in range(start, len(nums)):
if i>start and nums[i] == nums[i-1]:
continue
path.append(nums[i])
self.backtracking(nums, result, i+1, path)
path.pop()
回溯算法--LC.90子集II
于 2022-04-16 17:53:42 首次发布