题解 | #括号生成#

括号生成

https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 
     * @return string字符串ArrayList
     */

    /**
    思路:使用递归 递归的终止条件就是使用了n个左括号和n个右括号
    每次添加阔号有两种情况 要么添加左括号 要么添加右括号
    当然 添加右括号存在限制 必须已经加入的 左括号大于右括号 才能加入右括号 否则会出现非法情况

    题目特殊 不涉及到某些条件的加持与释放 类似于二叉树的深度优先
     */
    ArrayList<String> res = new ArrayList<String>(); 
    public ArrayList<String> generateParenthesis (int n) {
        // write code here
        recursion(0,0,"",n);
        return res;
    }

    void recursion(int left, int right,String s ,int n){
        if(left == n && right == n){
            res.add(s);
            return;
        }
        if(left < n){
             recursion(left+1,right,s+'(',n);
        }
        if(right < n && left > right){
             recursion(left,right+1,s+')',n);
        }
    }


}

全部评论
递归思路清晰,代码简洁易懂😊😊
点赞 回复 分享
发布于 2023-05-29 09:30 湖北
遇到非法情况的话怎么处理呢?
点赞 回复 分享
发布于 2023-05-29 09:24 四川

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务