【LeetCode 77. 组合】

1. 题目

2. 分析

本题有个难点在于如何保存深搜得到的结果?总结了一下,深搜处理的代码,关于返回值有三大类。

第一类:层层传递,将最深层的结果传上来;这类题有:【反转链表

第二类:每层都返回值,迭代更新;这类题有【二叉树最大深度

第三类:使用全局变量,将结果写到变量中保存。

本题的深搜代码则需要配合第三类来解决。

3. 代码

python 复制代码
class Solution:
    res = []
    def combine(self, n: int, k: int) -> List[List[int]]:
        cnt = 0
        idx = 1
        self.res = []
        tmp = []
        self.dfs(cnt, n, k, idx, tmp)
        return self.res

    def dfs(self, cnt, n, k, idx, tmp):
		# 这里需要注意,是n+1, 否则最后一个结果拿不到。
		# 一定要结合代码输出快速的定位问题
        if idx > n+1: 
            return    
        if cnt == k:
            print(tmp)
            self.res.append(tmp[:])
        elif cnt < k:
            tmp.append(idx)
            self.dfs(cnt+1, n, k, idx+1, tmp)
            del tmp[-1]
            self.dfs(cnt, n, k, idx+1, tmp)
相关推荐
小欣加油9 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
lqqjuly9 小时前
前沿算法深度解析(二)
人工智能·算法·机器学习
徐小夕10 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
akunkuntaimei11 小时前
2026年高考数学各省真题及答案(完整版)
算法·高考
Hello:CodeWorld11 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
8Qi813 小时前
LeetCode 516:最长回文子序列
算法·leetcode·职场和发展·动态规划
youngerwang14 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
KaMeidebaby14 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
手写码匠15 小时前
从零实现 Prompt 工程引擎:结构化提示、自动优化与多轮自省体系
人工智能·深度学习·算法·aigc
无限码力15 小时前
阿里算法岗 0530笔试真题 - 多约束条件下的元素匹配统计
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试