Leetcode 39. 组合总和

39. 组合总和 - 力扣(LeetCode)

 

 

 

思路 回溯

还是以递归全排列+剪枝来搞,套用回溯模板。

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var res [][]int
 
func combinationSum(candidates []int, target int) [][]int {
    res = make([][]int, 0)
    backTracking([]int{}, candidates, target, 0)
    return res
}
 
func Sum(nums []int) (res int) { //求和函数,应该可以继续优化
    for _, item := range nums {
        res += item
    }
    return
}
 
func backTracking(temp []int, nums []int, target int, start int) {
    if Sum(temp) == target {  //如果当前的和已经满足条件,结束此分支
        tmp := make([]int, len(temp))
        copy(tmp, temp)
        res = append(res, tmp) //将当前路径的结果添加到最终结果数组中
        return
    }
    if Sum(temp) > target { //如果当前数组的和已经超过target 直接停止后续节点的递归
        return
    }
    length := len(nums)
    for i := start; i < length; i++ {
        temp = append(temp, nums[i])   
        backTracking(temp, nums, target, i)
        temp = temp[:len(temp)-1]
    }
}

  

 


__EOF__

本文作者SoutherLea
本文链接https://www.cnblogs.com/lizhengnan/p/16250933.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   SoutherLea  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示