NC26 括号生成

括号生成

https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca?tpId=196&&tqId=37082&rp=1&ru=/activity/oj&qru=/ta/job-code-total/question-ranking

递归嘛
只有左括号比右括号数目多的时候才这一位才能是 () 否则只能是 (
注意也要保持 左右的数量都大于0 才可以添加
当到最后的时候左右都用完 res添加

import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 
     * @return string字符串ArrayList
     */
    public ArrayList<String> generateParenthesis (int n) {
        ArrayList<String> result = new ArrayList<>();
        backtrack("",n,n,result);
        return result;

    }

    private void backtrack(String string, int left, int right, List<String> result) {
        if(left == 0 && right ==0){
            result.add(string);
            return;
        }
        if(left == right){
            backtrack(string+'(',--left,right,result);
        }
        else{
            if(left >=1) backtrack(string+'(',left-1,right,result);
            if(right >=1) backtrack(string+')',left,right-1,result);
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 17:55
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
07-24 16:39
已编辑
门头沟学院 测试开发
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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