【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)
相关推荐
Wilber的技术分享14 分钟前
【LeetCode高频手撕题 2】面试中常见的手撕算法题(小红书)
笔记·算法·leetcode·面试
邪神与厨二病17 分钟前
Problem L. ZZUPC
c++·数学·算法·前缀和
软件测试媛1 小时前
软件测试常见的面试题(46道)
功能测试·面试·职场和发展
梯度下降中2 小时前
LoRA原理精讲
人工智能·算法·机器学习
IronMurphy2 小时前
【算法三十一】46. 全排列
算法·leetcode·职场和发展
czlczl200209252 小时前
力扣1911. 最大交替子序列和
算法·leetcode·动态规划
靴子学长2 小时前
Decoder only 架构下 - KV cache 的理解
pytorch·深度学习·算法·大模型·kv
寒秋花开曾相惜3 小时前
(学习笔记)3.8 指针运算(3.8.3 嵌套的数组& 3.8.4 定长数组)
java·开发语言·笔记·学习·算法
Гений.大天才3 小时前
2026年计算机领域的年度主题与范式转移
算法
njidf3 小时前
C++与Qt图形开发
开发语言·c++·算法