LeetCode讲解篇之77. 组合

文章目录

题目描述

题解思路

遍历nums,让当前数字添加到结果前缀中,递归调用,直到前缀的长度为k,然后将前缀添加到结果集

题解代码

go 复制代码
func combine(n int, k int) [][]int {
    var nums = make([]int, n)
    for i := n; i > 0; i-- {
        nums[i-1] = i
    }
    var res = make([][]int, 0)
    var dfs func(prefix []int, nums []int, k int)
    dfs = func(prefix []int, nums []int, k int) {
        if k == 0 {
            tmp := make([]int, len(prefix))
            copy(tmp[:], prefix[:])
            res = append(res, tmp)
            return
        }
        for i := 0; i <= len(nums) - k; i++ {
            dfs(append(prefix, nums[i]), nums[i+1:], k-1)
        }
    }
    dfs(make([]int, 0, k), nums, k)
    return res
}
相关推荐
洛水水2 分钟前
【力扣100题】81.寻找两个正序数组的中位数
数据结构·算法·leetcode
happymaker062631 分钟前
LeetCodeHot100——155.最小栈
算法
洛水水42 分钟前
【力扣100题】85.每日温度
算法·leetcode·职场和发展
Coder-magician1 小时前
《代码随想录》刷题打卡day15:二叉树part05
数据结构·c++·算法
Kurisu_红莉栖1 小时前
力扣56合并区间
算法·leetcode
Irissgwe1 小时前
算法的时间复杂度和空间复杂度
数据结构·c++·算法·c·时间复杂度·空间复杂度
随意起个昵称1 小时前
区间dp-基础题目3(永别)
c++·算法
周末也要写八哥1 小时前
有向图Hierholzer算法的另一种实现
算法
bIo7lyA8v1 小时前
算法调优中的性能回归与基准测试分析的技术8
算法·数据挖掘·回归
有点。1 小时前
C++贪心算法二(练习题)
c++·算法·贪心算法