本文共 1286 字,大约阅读时间需要 4 分钟。
Difficulty: 中等
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
Language: ****
class Solution {public: vectorgenerateParenthesis(int n) { vector res; stack stack; frame _frame; _frame.l = n,_frame.r = n,_frame.cur = ""; stack.push(_frame); while (stack.size()) { frame _frame = stack.top();stack.pop(); if (_frame.l==0 && _frame.r == 0) res.push_back(_frame.cur); if (_frame.l>0) { frame _t; _t.l = _frame.l -1 , _t.r = _frame.r, _t.cur = _frame.cur + "("; stack.push(_t); } if(_frame.r > _frame.l && _frame.r>0) { frame _t; _t.l = _frame.l,_t.r = _frame.r-1,_t.cur = _frame.cur + ")"; stack.push(_t); } } return res; } class frame { public: int l,r; string cur; }; // void dfs(vector &res, string s, int l,int r) { // if (l==0 && r == 0) return res.push_back(s); // if (l > 0) dfs(res, s + "(",l-1,r); // if ( r > l && r > 0) dfs(res,s+")",l,r-1); // }};
转载地址:http://nyyzi.baihongyu.com/