LeetCode 21. Generate Parentheses

来源:互联网 发布:知乎回答怎么添加图片 编辑:程序博客网 时间:2024/05/20 11:22

参考了remlostime的题解

将返回值ret的引用作为传出参数,递归产生括号,并加上剪枝:left_tot*2 > max_dep时,即当前压入的左括号的数量(left_tot*2 > 2*n = max_dep=> left_tot > n)超过总数n时剪枝即可。


代码:

class Solution {public:    vector<string> generateParenthesis(int n)     {    vector<string> ret;        gao(0, 2*n, 0, 0, string(), ret);        return ret;    }private:void gao(int dep, int max_dep, int left_now, int left_tot, string s, vector<string>& ret){if (left_tot*2 > max_dep){return ;} else if (dep == max_dep){ret.push_back(s);return ;}gao(dep+1, max_dep, left_now+1, left_tot+1, s+'(', ret);if (left_now > 0){gao(dep+1, max_dep, left_now-1, left_tot, s+')', ret);}}};


0 0
原创粉丝点击