LeetCode讲解篇之40. 组合总和 II

编程入门 行业动态 更新时间:2024-10-20 00:28:48

LeetCode讲解篇之40. <a href=https://www.elefans.com/category/jswz/34/1769978.html style=组合总和 II"/>

LeetCode讲解篇之40. 组合总和 II

文章目录

  • 题目描述
  • 题解思路
  • 题解代码

题目描述

题解思路

按升序排序candidates,然后遍历candidates,目标数减去当前candidates的数,若该结果小于0,因为candidates的元素大于0,所以后续不会再出现让计算结果等于0的情况,所以直接break,如果该结果等于0,将数据加到结果集合中,然后break,若该结果大于0,则将当前candidates的数加入tmp数组,递归调用,调用结束后,删去tmp中添加的当前candidates的数,然后去掉和当前candidates的数重复的数

题解代码

func combinationSum2(candidates []int, target int) [][]int {sort.Ints(candidates)res := make([][]int, 0)var dfs func([]int, int)tmp := []int{}dfs = func(candidates []int, target int) {n := len(candidates)for i := 0; i < n; i++ {temp := target - candidates[i]if temp < 0 {break}if temp == 0 {res = append(res, append([]int{}, append(tmp, candidates[i])...))break}tmp = append(tmp, candidates[i])dfs(candidates[i+1:], temp)tmp = tmp[:len(tmp)-1]for i < n - 1 && candidates[i] == candidates[i+1] {i++}}}dfs(candidates, target)return res
}

更多推荐

LeetCode讲解篇之40. 组合总和 II

本文发布于:2023-12-05 00:18:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662557.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组合   总和   LeetCode   II

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!