题解 | #加起来和为目标值的组合#

加起来和为目标值的组合

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
}
全部评论

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务