
Problem Statement
Given an array of distinct positive 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.
The same number may be chosen from candidates an unlimited number of times. Two combinations are unique if the frequency of at least one of the chosen numbers is different.
Example 1:
Input: candidates = [2, 3, 6, 7], target = 7
Output: [[2, 2, 3], [7]]
Explanation: The elements in these two combinations sum up to 7.
Example 2:
Input: candidates = [2, 4, 6, 8], target = 10
Output: [[2,2,2,2,2], [2,2,2,4], [2,2,6], [2,4,4], [2,8], [4,6]]
Explanation: The elements in these six combinations sum up to 10.
Constraints:
1 <= candidates.length <= 302 <= candidates[i] <= 40- All elements of candidates are distinct.
1 <= target <= 40
About the output order. Build combinations by scanning the candidates in the given order, allowing repeats of the current candidate before moving right, the order the examples show: for [2,3,6,7] and target 7, the answer is [[2,2,3],[7]]. The judge compares your list against this exact order, so a correct set of combinations arranged differently, such as [[7],[2,2,3]], is currently marked wrong.
Try it yourself
Try solving this question here: