题解 | #括号生成#

括号生成

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:24 四川
递归思路清晰,代码简洁易懂😊😊
点赞 回复 分享
发布于 2023-05-29 09:30 湖北

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务