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. 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: 2 can be reused, so 2 + 2 + 3 = 7 is one combination. 7 alone is another. No other multiset of candidates adds up to 7.
Example 2
Input: candidates = [2,3,5], target = 8
Output: [[2,2,2,2],[2,3,3],[3,5]]
Explanation: The combinations adding up to 8 are 2 + 2 + 2 + 2, 2 + 3 + 3, and 3 + 5.
Example 3
Input: candidates = [2], target = 1
Output: []
Explanation: The only candidate, 2, is already larger than the target 1, so no combination exists.
Build combinations by adding candidates and subtracting from the target. Allow reusing the current candidate (pass the same start index) so numbers can repeat, and use a start index to avoid generating the same multiset in different orders.
Run checks all cases above. Submit evaluates all test cases.