85 lines
1.7 KiB
Markdown
85 lines
1.7 KiB
Markdown
|
|
---
|
||
|
|
layout: page
|
||
|
|
title: Combination Sum II
|
||
|
|
last_solved:
|
||
|
|
category: backtrack
|
||
|
|
leetcode_url: https://leetcode.com/problems/combination-sum-ii
|
||
|
|
status: Attempted
|
||
|
|
---
|
||
|
|
|
||
|
|
Problem
|
||
|
|
-------
|
||
|
|
|
||
|
|
```
|
||
|
|
Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations in candidates where the candidate numbers sums to target.
|
||
|
|
|
||
|
|
Each number in candidates may only be used once in the combination.
|
||
|
|
|
||
|
|
Note:
|
||
|
|
|
||
|
|
All numbers (including target) will be positive integers.
|
||
|
|
The solution set must not contain duplicate combinations.
|
||
|
|
Example 1:
|
||
|
|
|
||
|
|
Input: candidates = [10,1,2,7,6,1,5], target = 8,
|
||
|
|
A solution set is:
|
||
|
|
[
|
||
|
|
[1, 7],
|
||
|
|
[1, 2, 5],
|
||
|
|
[2, 6],
|
||
|
|
[1, 1, 6]
|
||
|
|
]
|
||
|
|
Example 2:
|
||
|
|
|
||
|
|
Input: candidates = [2,5,2,1,2], target = 5,
|
||
|
|
A solution set is:
|
||
|
|
[
|
||
|
|
[1,2,2],
|
||
|
|
[5]
|
||
|
|
]
|
||
|
|
```
|
||
|
|
|
||
|
|
Solution
|
||
|
|
----------
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
{% highlight python %}
|
||
|
|
|
||
|
|
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
|
||
|
|
|
||
|
|
output = []
|
||
|
|
candidates = sorted(candidates)
|
||
|
|
|
||
|
|
def backtrack(currentList, remaining, start):
|
||
|
|
|
||
|
|
if remaining<0:
|
||
|
|
return
|
||
|
|
elif remaining==0:
|
||
|
|
output.append(currentList.copy())
|
||
|
|
else:
|
||
|
|
|
||
|
|
for i in range(start, len(candidates)):
|
||
|
|
|
||
|
|
if i==start or candidates[i]!=candidates[i-1]:
|
||
|
|
|
||
|
|
currentList.append(candidates[i])
|
||
|
|
backtrack(currentList, remaining-candidates[i], i+1)
|
||
|
|
currentList.pop()
|
||
|
|
|
||
|
|
backtrack([], target, 0)
|
||
|
|
return output
|
||
|
|
|
||
|
|
|
||
|
|
{% endhighlight %}
|
||
|
|
|
||
|
|
______________
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
{% highlight python %}
|
||
|
|
|
||
|
|
|
||
|
|
{% endhighlight %}
|
||
|
|
|
||
|
|
![image1]()
|