美文网首页
22. Generate Parentheses

22. Generate Parentheses

作者: 李清依 | 来源:发表于2018-03-01 22:38 被阅读0次

    22. Generate Parentheses

    Pick One


    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

    For example, given n = 3, a solution set is:

    [
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]
    

    Seen this question in a real interview before? Yes

    No
    思路:递归法,两个限制条件:
    1,左括号和右括号的数量都为0的时候
    2,只有当左括号<右括号的数量时才能添加右括号上去,否则无效
    AC代码:

    class Solution {
    public:
        vector<string> generateParenthesis(int n) {
            vector<string> result;
            generate("",n,n,result);
            return result;
        }
    private:
        void generate(string item,int left,int right,vector<string> &result){
            if(left==0&&right==0){
                result.push_back(item);
                return;
            }
            if(left>0){
                generate(item+'(',left-1,right,result);
            }
            if(left<right){
                generate(item+')',left,right-1,result);
            }
        }
    };
    

    相关文章

      网友评论

          本文标题:22. Generate Parentheses

          本文链接:https://www.haomeiwen.com/subject/octoxftx.html