栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode 77. 组合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode 77. 组合

题目:

力扣

题解:
public class Combine {

    public List> resultList = new ArrayList<>();
    public LinkedList pathList = new LinkedList<>();

    public List> combine(int n, int k) {
        if (n == 0) {
            return new ArrayList<>();
        }

        dfsForCombine(n, k, 1);
        return resultList;
    }

    public void dfsForCombine(int n, int k, int start) {
        if (pathList.size() == k) {
            resultList.add(new ArrayList<>(pathList));
            return;
        }

        // 剪枝:元素个数
        for (int i = start; i <= n - (k - pathList.size()) + 1; i++) {
            pathList.add(i);
            dfsForCombine(n, k, i + 1);
            pathList.removeLast();
        }
    }
}

剪枝:

pathList.size() 为已选择元素个数,k 是总的元素总数,(k - pathList.size()) 为待选择的元素总数,所以 for 遍历的最多从 index = n - (k - pathList.size()) + 1 开始。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号