var combinationSum = function(candidates, target) {
const len = candidates.length;
const ret = [];
const dfs = (start, buf=[],target) => {
for(let index = start;index < len;index++){
buf.push(candidates[index]);
if(candidates[index] === target ) {
ret.push([...buf])
}
else if (candidates[index] < target ) {
dfs(index, buf,(target - candidates[index]))
}
buf.pop();
}
}
dfs(0,[],target);
return ret;
};
用了回溯,剪枝这块想了好久,一年前还写过~用index去控制循环,之前想的是去判断每次压入的要比之前的数值大~
https://leetcode-cn.com/problems/combination-sum/
题目描述这里