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、记住组合问题都可以先转换成树,脑袋里可以把组合组成的过程,转换成一棵树遍历过程。

相关推荐
菜菜的后端私房菜几秒前
Protocol Buffers!高效数据通信协议
java·后端·protobuf
晴殇i几秒前
前端视角下的单点登录(SSO)从原理到实战
前端·面试·trae
树獭叔叔5 分钟前
Python 锁机制详解:从原理到实践
后端·python
2025年一定要上岸12 分钟前
【Django】-10- 单元测试和集成测试(下)
数据库·后端·python·单元测试·django·集成测试
是店小二呀13 分钟前
【动态规划 | 子序列问题】子序列问题的最优解:动态规划方法详解
算法·动态规划·代理模式
顾林海24 分钟前
Android安全防护:Runtime 调试检测与反制手段
android·安全·面试
程序员海军24 分钟前
这才是Coding该有的样子!重新定义编程显示器
前端·后端
_風箏26 分钟前
Shell【脚本 05】交互式Shell脚本编写及问题处理([: ==: unary operator expected)[: ==: 期待一元表达式
后端
Cache技术分享26 分钟前
151. Java Lambda 表达式 - 使用 Consumer 接口处理对象
前端·后端
用户5769053080127 分钟前
Python实现一个类似MybatisPlus的简易SQL注解
后端·python