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

加起来和为目标值的组合

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

相关推荐

不愿透露姓名的神秘牛友
07-10 13:54
点赞 评论 收藏
分享
下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务