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 分钟前
实时游戏网络协议深度对比:KCP vs WebRTC vs WebSocket
后端·websocket·webrtc
普通网友15 分钟前
springboot之集成Elasticsearch
spring boot·后端·elasticsearch
QuZero21 分钟前
Guava Cache Deep Dive
java·后端·算法·guava
随意起个昵称27 分钟前
线性dp-LIS题目4(A Twisty Movement)
算法·动态规划
Felven37 分钟前
B. Fair Numbers
数据结构·算法
人道领域41 分钟前
【LeetCode刷题日记】93.复原IP地址
java·开发语言·算法·leetcode
jarreyer1 小时前
【算法记录1】模型训练问题
算法
Felven1 小时前
D. Friends and the Restaurant
算法
leeyi1 小时前
SSE 实时推流 —— Token 怎么一个个蹦出来
后端·agent
想吃火锅10051 小时前
【leetcode】165.比较版本号js
javascript·算法·leetcode