diff --git a/0040-combination-sum-ii/0040-combination-sum-ii.py b/0040-combination-sum-ii/0040-combination-sum-ii.py new file mode 100644 index 0000000..666c657 --- /dev/null +++ b/0040-combination-sum-ii/0040-combination-sum-ii.py @@ -0,0 +1,24 @@ +class Solution: + def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]: + candidates.sort() + + res = [] + + def backtrack(cur, pos, target): + if target == 0: + res.append(cur.copy()) + return + if target <= 0: + return + + prev = -1 + for i in range(pos, len(candidates)): + if candidates[i] == prev: + continue + cur.append(candidates[i]) + backtrack(cur, i + 1, target - candidates[i]) + cur.pop() + prev = candidates[i] + + backtrack([], 0, target) + return res \ No newline at end of file