LeetCode——组合
发布日期:2021-09-23 21:27:19 浏览次数:0 分类:技术文章

本文共 548 字,大约阅读时间需要 1 分钟。

题目描述

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。

示例:

输入: n = 4, k = 2输出:[  [2,4],  [3,4],  [2,3],  [1,2],  [1,3],  [1,4],]

题解

package mainimport "fmt"func main() {
   
fmt.Print(combine(4, 2))}func combine(n int, k int) (ans [][]int) {    
tmp := []int{    }
var dfs func(int)
dfs = func(cur int) {    
// 剪枝
if len(tmp)+(n-cur+1) < k {    
return
}
if len(tmp) == k {    
comb := make([]int, k)
copy(comb, tmp)
ans = append(ans, comb)
return
}
// 选择当前位置
tmp = append(tmp, cur)
dfs(cur + 1)
// 不选择当前位置
tmp = tmp[:len(tmp)-1]
dfs(cur + 1)
}
dfs(1)
return}

转载地址:https://blog.csdn.net/bodhiye/article/details/109301632 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux netstat 命令
下一篇:Linux lsof 命令

发表评论

最新留言

很好
[***.172.111.71]2022年05月22日 09时13分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章