LeetCode第77题组合

继续打卡算法题,今天学习的是LeetCode第77题组合,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。

分析一波题目

哈哈哈,之前做过组合相关的题目,这个题目就非常简单了,还是一样的套路,我们只要把组合想成一棵树遍历就可以了。

比如 n=4 k=2。

本题解题技巧

1、将组合问题转换为遍历树的问题,组合问题都可以将其先转换成树形结构,再看是否可以求解。

编码解决

java 复制代码
class Solution {
    public List<List<Integer>> combine(int n, int k) {

        List<List<Integer>> result = new ArrayList<>();

        List<Integer> subResult= new ArrayList<>();
        getSubResult(result, subResult, 0,n, k);
        return result;
    }

    public void getSubResult(List<List<Integer>> result, List<Integer> subResult,int start,int n, int k) {
        //满足了组合条件
        if(subResult.size() == k) {
            result.add(subResult);
            return;
        }
        
        for(int i=start; i<n; i++) {
            List<Integer> tempSubResult= new ArrayList<>();
            tempSubResult.addAll(subResult);
            tempSubResult.add(i+1);
            //递归
            getSubResult(result, tempSubResult, i+1,n, k);
        }    
    }
}

总结

1、记住组合问题都可以先转换成树,脑袋里可以把组合组成的过程,转换成一棵树遍历过程。

相关推荐
泉城老铁13 分钟前
导出大量数据时如何优化内存使用?SXSSFWorkbook的具体实现方法是什么?
spring boot·后端·excel
渣哥15 分钟前
从配置文件到 SpEL 表达式:@Value 在 Spring 中到底能做什么?
javascript·后端·面试
前端 贾公子17 分钟前
《Vuejs设计与实现》第 5 章(非原始值响应式方案)下 Set 和 Map 的响应式代理
数据结构·算法
文心快码BaiduComate25 分钟前
开工不累,双强护航:文心快码接入 DeepSeek-V3.2-Exp和 GLM-4.6,助你节后高效Coding
前端·人工智能·后端
终生都要写代码35 分钟前
Java 25 新功能和示例
后端
泉城老铁36 分钟前
springboot实现对接poi 导出excel折线图
java·spring boot·后端
顾林海1 小时前
Android编译插桩黑科技:ReDex带你给App"瘦个身,提个速"
android·面试·性能优化
金銀銅鐵1 小时前
[Java] 如何自动生成简单的 Mermaid 类图
java·后端
Hard but lovely1 小时前
C++---》stl : pair 从使用到模拟实现
c++·后端