题解 | #加起来和为目标值的组合#
加起来和为目标值的组合
http://www.nowcoder.com/practice/75e6cd5b85ab41c6a7c43359a74e869a
回溯:先排序,后回溯,注意剪掉已经使用过的元素
去重:如果前一个元素与当前元素相同,那么没有必要再用当前元素进行后续的回溯
function combinationSum2( num , target ) { if (!num.length) return [] num.sort((a, b) => a - b) let result = [] function dfs(path, sum, ind) { if (sum === target) return result.push([...path]) else if(sum > target) return for(let i = ind; i < num.length; i ++) { if (i > ind && num[i] === num[i - 1]) continue path.push(num[i]) dfs(path, sum + num[i], i + 1) path.pop() } } dfs([], 0, 0) return result }