Combination Sum
Description
Given a set of candidate numbers (candidates
) (without duplicates) and a target number (target
), find all unique combinations in candidates
where the candidate numbers sums to target
.
The same repeated number may be chosen from candidates
unlimited number of times.
Note:
- All numbers (including
target
) will be positive integers. - The solution set must not contain duplicate combinations.
Example 1:
Input: candidates =[2,3,6,7],
target =7
, A solution set is: [ [7], [2,2,3] ]
Example 2:
Input: candidates = [2,3,5],
target = 8,
A solution set is:
[
[2,2,2,2],
[2,3,3],
[3,5]
]
Solution(javascript)
/**
* @param {number[]} candidates
* @param {number} target
* @return {number[][]}
*/
var combinationSum = function(candidates, target) {
function findCom(cans, target, rst, arr) {
if(target === 0){
rst.push(arr);
} else {
for(let i = 0; i < cans.length; i++){
if(cans[i] <= target){
let newArr = arr.slice();
newArr.push(cans[i]);
findCom(cans.slice(i), target-cans[i], rst, newArr);
}
}
}
}
candidates.sort((a, b) => a - b);
let rst = new Array();
for(let i = 0; i < candidates.length; i++){
if(candidates[i] <= target){
findCom(candidates.slice(i), target-candidates[i], rst, [candidates[i]]);
}
}
return rst;
};