leetcode 22. 括号生成

问题描述

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

问题分析

代码

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> ans;
        string path;
        backtrack(ans,path,n,0,0);
        return ans;
    }
    void backtrack(vector<string> &ans,string path,int n,int l,int r)
    {
        if(l > n || r > n || r > l) return ;
        if(l == n && r == n)
        {
            ans.push_back(path);
            return;
        }
        backtrack(ans,path+'(',n,l+1,r);
        backtrack(ans,path+')',n,l,r+1);
    }
};

结果

执行用时 :4 ms, 在所有 cpp 提交中击败了96.36%的用户
内存消耗 :18.4 MB, 在所有 cpp 提交中击败了25.18%的用户
posted @ 2020-03-04 20:34  曲径通霄  阅读(132)  评论(0编辑  收藏  举报