Given an array of distinct integers candidates and a target integer, return all unique combinations where the chosen numbers sum to target. The same number may be chosen an unlimited number of times.
candidates = [2,3,6,7], target = 7[[2,2,3],[7]]candidates = [2,3,5], target = 8[[2,2,2,2],[2,3,3],[3,5]]Key difference from Combinations: recurse with i instead of i+1, allowing reuse of the same element. Sorting + break pruning avoids exploring paths that exceed the target. The recursion tree depth is bounded by target/minCandidate.