LeetCode22. 括号生成 [中等]——递归

题目描述:

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 = 3,生成结果为:

我的解题:

1.感觉自己好像忘不掉电话号码那道题了,总是想用queue,这道题用queue写了下,时间超出限制了。。。

2.这题好像更适合递归

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        dfs(res,"",n,n);
        return res;
    }
    void dfs(vector<string>& res,string s,int a,int b){//ab分别代表还需要的左右括号数目
        if(a==0&&b==0){
            res.push_back(s);
            return;
        }
        if(a>b) return;
        if(a>0) dfs(res,s+'(',a-1,b);
        if(b>0) dfs(res,s+')',a,b-1);
        return;
    }
};

发布了66 篇原创文章 · 获赞 1 · 访问量 506

猜你喜欢

转载自blog.csdn.net/qq_41041762/article/details/105151645