22. Generate Parentheses


做题历程:

  1. 2016/Oct/23 本题做了不止1次,本次大概耗时6分钟独立解出

就是基本的recursive dfs没啥好说的,直接上代码:

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        dfs(res, "", 0, 0, n);
        return res;
    }
private:
    void dfs(vector<string>& res, string tmp, int left, int right, int n) {
        if (left == n && right == n) {
            res.push_back(tmp);
            return;
        }
        if (left < n) {
            dfs(res, tmp + "(", left + 1, right, n);
        }
        if (right < left) {
            dfs(res, tmp + ")", left, right + 1, n);
        }
    }
};

results matching ""

    No results matching ""