var combinationSum = function (candidates, target) { const ans = []; const dfs = (target, combine, idx) => { if (idx === candidates.length) { return; } if (target === 0) { ans.push(combine); return; } dfs(target, combine, idx + 1); if (target - candidates[idx] >= 0) { dfs(target - candidates[idx], [...combine, candidates[idx]], idx); } } dfs(target, [], 0); return ans; };
时间: 2024-02-15 16:28:35 浏览: 86
leetcode39_组合总数
这是一个求解给定目标值的组合总和的函数,函数名为combinationSum,参数为candidates和target。
candidates是一个数组,存储了候选数字,target是目标值。
函数使用了深度优先搜索算法(DFS)来遍历所有可能的组合情况。在dfs函数中:
1. 如果idx等于candidates数组的长度,说明已经遍历完了所有的数字,直接返回。
2. 如果target等于0,说明已经找到一组组合,将组合添加到结果数组ans中,然后返回。
3. 首先尝试不选当前数字,继续遍历下一个数字,dfs(target, combine, idx + 1)。
4. 然后尝试选当前数字,如果target减去当前数字仍然大于等于0,递归调用dfs函数,并将当前数字加入到组合中,dfs(target - candidates[idx], [...combine, candidates[idx]], idx)。
最后,在主函数combinationSum中,调用dfs函数,初始时combine为空数组,idx为0。
最终,返回结果数组ans,其中存储了所有符合条件的组合。
阅读全文