【leetcode】22. Generate Parentheses
来源:互联网 发布:java embedded 编辑:程序博客网 时间:2024/04/26 20:03
一、题目描述
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()"]
题目解读:给一个n,写一个函数生成所有合法的n对括号的组合
思路:全排列问题,使用递归比较容易写出代码。首先注意使得组合合法的限制条件(1)有n对括号(n个左括号和n个右括号)(2)任一个位置上左括号数一定要大于等于右括号数。如果用left来计数左括号的个数,right来计数右括号的个数,容易得出递归结束的条件是left==n && right ==n
c++代码(4ms,12.82%)
class Solution {private: vector<string> result; int n; public: void generate(int left, int right, string str, int rest){ //left:左括号数,right:右括号数,str:当前的字符串,rest:左括号数-右括号数(即要保证左括号数大于等于右括号数) if(left == n && right == n){ //递归结束条件 result.push_back(str); return; } if(left != n){ generate(left+1, right, str+'(', rest+1); } if(right!=n && rest>=1){ generate(left, right+1, str+')', rest-1); } return; } vector<string> generateParenthesis(int n) { this->n=n; generate(1,0, "(", 1); return result; }};
0 0
- [LeetCode]22.Generate Parentheses
- LeetCode --- 22. Generate Parentheses
- LeetCode 22.Generate Parentheses
- [Leetcode] 22. Generate Parentheses
- 【LeetCode】22.Generate Parentheses
- [leetcode] 22.Generate Parentheses
- 【leetcode】22. Generate Parentheses
- Leetcode-22.Generate Parentheses
- [leetcode] 22. Generate Parentheses
- 22. Generate Parentheses LeetCode
- leetcode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- leetcode 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- LeetCode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- LeetCode *** 22. Generate Parentheses
- LeetCode 22. Generate Parentheses
- caffe---cuda 7.5安装(GTX 980ti)
- Android res/raw文件以及raw与res/assets异同
- iOS开发UIScrollView的底层实现
- 51Nod--1011最大公约数GCD
- QTSS常数
- 【leetcode】22. Generate Parentheses
- JavaMail-API详解
- JSON.parse()和JSON.stringify()
- Akka框架基本要点介绍
- Mybatis 大数据量的批量insert解决方案
- 微信蓝牙Airsync协议demo工程实现
- Java研发方向如何准备BAT技术面试
- 编译fuchsia的工具链
- Core Animation简介