Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 68f6c46

Browse files
committed
[回溯算法去重问题的另一种写法.md] add python code
1 parent 77c1098 commit 68f6c46

File tree

1 file changed

+76
-1
lines changed

1 file changed

+76
-1
lines changed

problems/回溯算法去重问题的另一种写法.md

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,84 @@ used数组可是全局变量,每层与每层之间公用一个used数组,所
250250
251251
Java:
252252
253-
254253
Python:
255254
255+
**90.子集II**
256+
257+
```python
258+
class Solution:
259+
def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
260+
res = []
261+
nums.sort()
262+
def backtracking(start, path):
263+
res.append(path)
264+
uset = set()
265+
for i in range(start, len(nums)):
266+
if nums[i] not in uset:
267+
backtracking(i + 1, path + [nums[i]])
268+
uset.add(nums[i])
269+
270+
backtracking(0, [])
271+
return res
272+
```
273+
274+
**40. 组合总和 II**
275+
276+
```python
277+
class Solution:
278+
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
279+
280+
res = []
281+
candidates.sort()
282+
283+
def backtracking(start, path):
284+
if sum(path) == target:
285+
res.append(path)
286+
elif sum(path) < target:
287+
used = set()
288+
for i in range(start, len(candidates)):
289+
if candidates[i] in used:
290+
continue
291+
else:
292+
used.add(candidates[i])
293+
backtracking(i + 1, path + [candidates[i]])
294+
295+
backtracking(0, [])
296+
297+
return res
298+
```
299+
300+
**47. 全排列 II**
301+
302+
```python
303+
class Solution:
304+
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
305+
path = []
306+
res = []
307+
used = [False]*len(nums)
308+
309+
def backtracking():
310+
if len(path) == len(nums):
311+
res.append(path.copy())
312+
313+
deduplicate = set()
314+
for i, num in enumerate(nums):
315+
if used[i] == True:
316+
continue
317+
if num in deduplicate:
318+
continue
319+
used[i] = True
320+
path.append(nums[i])
321+
backtracking()
322+
used[i] = False
323+
path.pop()
324+
deduplicate.add(num)
325+
326+
backtracking()
327+
328+
return res
329+
```
330+
256331

257332
Go:
258333

0 commit comments

Comments
 (0)