leetcode_gym/_problems/combinationSum2.md
2026-08-25 19:14:07 -06:00

1.7 KiB

layout, title, last_solved, category, leetcode_url, status
layout title last_solved category leetcode_url status
page Combination Sum II backtrack https://leetcode.com/problems/combination-sum-ii 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