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

加起来和为目标值的组合

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

相关推荐

sagima:然后这个帖子又登上了
点赞 评论 收藏
分享
2024-12-21 01:36
电子科技大学 Java
牛客850385388号:员工福利查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务