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

LeetCode第22题 括号生成

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

LeetCode第22题 括号生成

第一反应

打 表
当然不能这样
可以递归吧,应该是三种情况,第n的情况时n-1的每种情况左边加一对括号,或者右边加一对括号,或者被括号包括,但是这样有可能重复,好像不太好。
或者换个思路,当成一个二叉树,根节点是一个左括号,两侧分别是左括号和右括号。向递归函数里传入的值为(未配对左括号的数量,当前的字符串)

java知识

关于java传递对象的引用
传递基本数据类型的时候是传递值,传递对象的时候传递的是引用

提交通过
class Solution {
    public List generateParenthesis(int n) {
        List ans = new ArrayList<>();
        summon(ans, n, 1, "(", 1);
        return ans;
    }
    public void summon(List ans, int n, int stack, String str, int leftCount){
        if(str.length() == n*2){
            ans.add(str);
            return ;
        }
        if(leftCount < n){
            summon(ans, n, stack+1, str+"(", leftCount+1);
        }
        if(stack > 0 ){
            summon(ans, n, stack-1, str+")", leftCount);
        }
    }
}

都用了递归了,没想到时间和内存消耗都算优秀的

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

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

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