Combination Sum II
Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations in candidates where the candidate numbers sum to target.
Each number in candidates may only be used once in the combination.
Note: The solution set must not contain duplicate combinations.
class Solution:
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
candidates.sort()
res = []
n = len(candidates)
def backtrack(cur, pos, target):
if target == 0:
res.append(cur.copy())
# return
if target < 0:
return
prev = -1
for i in range(pos, n):
if prev == candidates[i]:
continue
cur.append(candidates[i])
backtrack(cur, i+1, target-candidates[i])
cur.pop()
prev = candidates[i]
backtrack([], 0, target)
return res