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

相关推荐
2401_8812444010 分钟前
Treap树
数据结构·算法
乌萨奇也要立志学C++11 分钟前
二叉树OJ题(单值树、相同树、找子树、构建和遍历)
数据结构·算法
网安INF13 分钟前
深度学习中的逻辑回归:从原理到Python实现
人工智能·python·深度学习·算法·逻辑回归
世界哪有真情24 分钟前
用虚拟IP扩容端口池:解决高并发WebSocket端口耗尽问题
前端·后端·websocket
wsxqaz25 分钟前
浏览器原生控件上传PDF导致hash值不同
算法·pdf·哈希算法
知其然亦知其所以然32 分钟前
JVM社招面试题:队列和栈是什么?有什么区别?我在面试现场讲了个故事…
java·后端·面试
武子康35 分钟前
大数据-30 ZooKeeper Java-API 监听节点 创建、删除节点
大数据·后端·zookeeper
知了一笑36 分钟前
SpringBoot3集成多款主流大模型
spring boot·后端·openai
wmze37 分钟前
InnoDB存储引擎--索引与锁
后端
星辰大海的精灵41 分钟前
如何确保全球数据管道中的跨时区数据完整性和一致性
java·后端·架构