22. Generate Parentheses
DescriptionHintsSubmissionsDiscussSolution
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
和上一个
leetcode17Letter Combinations of a Phone Number【队列】 - CSDN博客
写法灰常相似啊
维护一个队列,每次取出一个,判断是否个数,在最后加入不同括号,入队列
最后一位特判
很愚蠢的是 以为是Python语法 上来CE了
再就是当时就觉得 不设定num变量 直接for(int j=0;j<ans.size();j++) 就死循环了 想了半天才明白咋回事
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string>ans;
ans.push_back("");
for(int i=0;i<n*2;i++){
int num=ans.size();
for(int j=0;j<num;j++){
string nw=ans[0];
ans.erase(ans.begin());
int l=0,r=0;
for(int k=0;k<i;k++){
if(nw[k]=='(')
l++;
else
r++;
}
if(i!=n*2-1)
{
if(l>r){
ans.push_back(nw+'(');
ans.push_back(nw+')');
}
else if(l==r)
ans.push_back(nw+'(');
}
else
{
if(l==r+1)
ans.push_back(nw+')');
}
}
}
return ans;
}
};