0
点赞
收藏
分享

微信扫一扫

括号生成 来源:力扣

西特张 2022-03-27 阅读 69

括号生成

❤️ ❤️ 中等

题目介绍

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

提示:

1 <= n <= 8

思路分析

递归法:
在这里插入图片描述

视频链接
(个人觉得可以考虑移位的方法,但是思路有点乱,还写不出来)

代码

class Solution {
public:
    void method(int l,int r,string s,int n,vector<string>& res){
        if(l<n){
            if(l>r){
                method(l+1,r,s+'(',n,res);
                method(l,r+1,s+')',n,res);
            }else if(l==r){
                method(l+1,r,s+'(',n,res);
            }
        }else if(l==n){
            if(s.length()!=2*n){
                method(l,r+1,s+')',n,res);
            }else{
                res.push_back(s);
            }
        }
    }

    vector<string> generateParenthesis(int n) {
        string s="";
        vector<string> result;
        method(0,0,s,n,result);
        return result;
    }
};
举报

相关推荐

0 条评论