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.
Input: candidates = [2,3,6,7], target = 7 Output: [[2,2,3],] Explanation: 2 and 3 are candidates, and 2 + 2 + 3 = 7. Note that 2 can be used multiple times. 7 is a candidate, and 7 = 7. These are the only two combinations.
Input: candidates = [2,3,5], target = 8 Output: [[2,2,2,2],[2,3,3],[3,5]]
Input: candidates = , target = 1 Output: 
Input: candidates = , target = 1 Output: []
Input: candidates = , target = 2 Output: [[1,1]]
1 <= candidates.length <= 30
1 <= candidates[i] <= 200
- All elements of
1 <= target <= 500
The solution in Java code
This problem is perform for using a
backtracking algorithm to solve it.
Backtracking is an algorithmic-technique for solving problems recursively by trying to build a solution incrementally, one piece at a time, removing those solutions that fail to satisfy the constraints of the problem at any point of time (by time, here, is referred to the time elapsed till reaching any level of the search tree).
Using this technique, we can write the following code to solve our challenge: