Merge pull request #839 from casnz1601/patch-16

Update 0090.子集II.md
This commit is contained in:
程序员Carl
2021-10-14 09:49:27 +08:00
committed by GitHub

View File

@ -207,20 +207,30 @@ class Solution {
Python Python
```python3 ```python3
class Solution: class Solution:
def __init__(self):
self.paths = []
self.path = []
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]: def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
res = [] #存放符合条件结果的集合 nums.sort()
path = [] #用来存放符合条件结果 self.backtracking(nums, 0)
def backtrack(nums,startIndex): return self.paths
res.append(path[:])
for i in range(startIndex,len(nums)): def backtracking(self, nums: List[int], start_index: int) -> None:
if i > startIndex and nums[i] == nums[i - 1]: #我们要对同一树层使用过的元素进行跳过 # ps.空集合仍符合要求
self.paths.append(self.path[:])
# Base Case
if start_index == len(nums):
return
# 单层递归逻辑
for i in range(start_index, len(nums)):
if i > start_index and nums[i] == nums[i-1]:
# 当前后元素值相同时,跳入下一个循环,去重
continue continue
path.append(nums[i]) self.path.append(nums[i])
backtrack(nums,i+1) #递归 self.backtracking(nums, i+1)
path.pop() #回溯 self.path.pop()
nums = sorted(nums) #去重需要排序
backtrack(nums,0)
return res
``` ```
Go Go