给定一个无重复元素的正整数数组 nums 和一个正整数 target ,找出 nums 中所有可以使数字之和为目标数 target 的组合,nums 中的数可以重复选取,只要选出的组合中有一个数不同则视为是不同组合。
数据范围:数组长度满足
, 数组中的元素满足
,
,保证组合数结果少于 150 个
1,[1]
[[1]]
5,[1,4,5]
[[1,4],[5],[1,1,1,1,1]]
5,[2]
[]
function combinationCount( target , nums ) {
let res = [];
let path = [];
let sum = 0;
nums.sort();
backTracking(target, nums, 0, 0);
return res;
function backTracking(target, nums, sum, startIndex){
if(sum === target){
res.push([...path]);
return;
}
if(sum > target){
return;
}
for(let i = startIndex; i < nums.length; i++){
path.push(nums[i]);
sum += nums[i];
backTracking(target, nums, sum, i);
sum -= nums[i];
path.pop();
}
}
}