39. Combination Sum
Given an array of distinct integers candidates and a target integer target, return a list of all unique combinations of candidates where the chosen numbers sum to target. You may return the combinations in any order
ArrayExample 1:
- Input:
candidates = [2,3,6,7], target = 7 - Output:
[[2,2,3],[7]] - Explanation:
2and3arecandidates, and2 + 2 + 3 = 7. Note that2can be used multiple times.7is a candidate, and7 = 7. These are the only two combinations.
Example 2:
- Input:
candidates = [2,3,5], target = 8 - Output:
[[2,2,2,2],[2,3,3],[3,5]]
Example 3:
- Input:
candidates = [2], target = 1 - Output:
[]
Constraints:
1 <= candidates.length <= 302 <= candidates[i] <= 40- All elements of
candidatesare distinct. 1 <= target <= 40
Solution
class Solution:
def combinationSum(self, candidates: list[int], target: int) -> list[list[int]]:
candidates.sort()
result, path = [], []
def backtrack(start, remaining):
if remaining == 0:
result.append(path[:])
return
for i in range(start, len(candidates)):
if candidates[i] > remaining:
break
path.append(candidates[i])
backtrack(i, remaining - candidates[i])
path.pop()
backtrack(0, target)
return result