核心内容摘要
低延迟游戏串流新体验:Sunshine从设备适配到优化的全流程指南
组合总数给你一个无重复元素的整数数组candidates和一个目标整数target找出candidates中可以使数字和为目标数target的 所有不同组合并以列表形式返回。
你可以按任意顺序返回这些组合。
candidates中的同一个数字可以无限制重复被选取。
如果至少一个数字的被选数量不同则两种组合是不同的。
对于给定的输入保证和为target的不同组合数少于150个。
示例 1输入candidates [2,3,6,7], target 7输出[[2,2,3],[7]]解释2 和 3 可以形成一组候选2 2 3 7 。
注意 2 可以使用多次。
7 也是一个候选 7 7 。
仅有这两种组合。
示例 2输入:candidates [2,3,5], target 8输出:[[2,2,2,2],[2,3,3],[3,5]]示例 3输入:candidates [2], target 1输出:[]/** * param {number[]} candidates * param {number} target * return {number[][]} */ var combinationSum function(candidates, target) { const path [] const res [] const backtrack (startIndex,sum) { if(sum target){ res.push([...path]) return } if(sum target){ return } for(let i startIndex; i candidates.length;i){ const cur candidates[i] path.push(cur) backtrack(i,sum cur) path.pop() } } backtrack(0,
return res };首先用一个数组path存当前的组合用一个变量sum记录当前和从某个起始下标开始选数由于题目告诉我们同一个数字可以无限制重复被选取且如果被选取的数量相同则组合是相同的所以我们要避免出现[2,2,3][3,2,2]同时存在的情况可以通过后面的递归只能从当前的下表选取从而避免这一情况2 → 只能选
2、
3、
7 3 → 只能选
3、