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
}
相关推荐
SimonKing3 分钟前
集合的处理:JDK和Guava孰强孰弱?
java·后端·算法
爱装代码的小瓶子12 分钟前
字符操作函数续上
android·c语言·开发语言·数据结构·算法
千楼33 分钟前
LeetCode 3090. 每个字符最多出现两次的最长子字符串
算法
_DF35 分钟前
【Fifty Project - D37】
leetcode
人类发明了工具42 分钟前
【强化学习】PPO(Proximal Policy Optimization,近端策略优化)算法
人工智能·算法·机器学习·ppo·近端策略优化算法
CodeWithMe43 分钟前
【Leetcode】每日一题 —— No.2966
算法·leetcode
IT古董1 小时前
【第二章:机器学习与神经网络概述】01.聚类算法理论与实践-(3)DBSCAN 聚类算法
神经网络·算法·机器学习
wenchun0011 小时前
【面试经验】注册中心与配置中心选择CP还是AP
面试·职场和发展
曾几何时`2 小时前
C++——位图、布隆过滤器
数据结构·算法
太白IT记2 小时前
1572. 矩阵对角线元素的和
线性代数·算法·矩阵