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]]` **Example 2:** Input: `candidates = [2,3,5]`, `target = 8` Output: `[[2,2,2,2],[2,3,3],[3,5]]`
Recursive Backtracking with State Sharing
We explore two decisions at each step: include the current candidate (and stay on the same index to allow reuse) or exclude the current candidate (move to the next index). This systematic exploration covers all possible combinations.