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