给定一个无重复元素的正整数数组 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(); } } }