タイトルの説明:
与えられた n個 生成された括弧の数を表し、あなたが関数を記述、すべての可能なおよび生成することができる効果的な括弧の組み合わせを。
たとえば、 n = 3の場合、結果は次のようになります。
私の解決策:
1.電話番号の質問が忘れられないような気がしますいつもキューを使いたいのですが、この質問はキューに書いてあり、時間が制限を超えています。。。
2.この質問は再帰により適しているようです
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
dfs(res,"",n,n);
return res;
}
void dfs(vector<string>& res,string s,int a,int b){//ab分别代表还需要的左右括号数目
if(a==0&&b==0){
res.push_back(s);
return;
}
if(a>b) return;
if(a>0) dfs(res,s+'(',a-1,b);
if(b>0) dfs(res,s+')',a,b-1);
return;
}
};