[LeetCode]22. Generate Parentheses
来源:互联网 发布:淘宝母婴节是哪一天 编辑:程序博客网 时间:2024/06/01 19:27
题目: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:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
一般来说是用递归的方法,因为可以归结为子问题去操作.
在每次递归函数中记录左括号和右括号的剩余数量,
然后有两种选择,一个是放一个左括号,另一种是放一个右括号。
需要特别注意的是剩余的右括号不能比左括号少,左括号右括号数量都要大于0。
如果只是要输出结果有多少组,那么直接用卡特兰数的公式就可以。
generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
一般来说是用递归的方法,因为可以归结为子问题去操作.
在每次递归函数中记录左括号和右括号的剩余数量,
然后有两种选择,一个是放一个左括号,另一种是放一个右括号。
需要特别注意的是剩余的右括号不能比左括号少,左括号右括号数量都要大于0。
如果只是要输出结果有多少组,那么直接用卡特兰数的公式就可以。
关于卡特兰数,请参见卡特兰数-维基百科
两种方法如下:
class Solution {public:vector<string> generateParenthesis(int n) {vector<string> res;addingpar(res, "", n, 0);return res;}void addingpar(vector<string> &v, string str, int n, int m){if (n == 0 && m == 0) {v.push_back(str);return;}if (m > 0){ addingpar(v, str + ")", n, m - 1); }if (n > 0){ addingpar(v, str + "(", n - 1, m + 1); }}};class Solution {public:vector<string> generateParenthesis(int n) {if (n == 0)return vector<string>();vector<string > ret;dfs(ret, "", n, n);return ret;}//利用二叉树递归思想void dfs(vector<string> &ret, string tmp, int left, int right){if (0 == left && 0 == right){ret.push_back(tmp);return;}else if (left > 0)dfs(ret, tmp + '(', left - 1, right);if (left < right)dfs(ret, tmp + ')', left, right - 1);}};
阅读全文
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
- OnTouchEvent方法实现View的拖动效果
- 高级I/O函数
- Oracle 数据库基础练习②
- React Native 网络请求封装:使用Promise封装fetch请求
- 九宫格输入法
- [LeetCode]22. Generate Parentheses
- 详解C语言中的stdin,stdout,stderr
- java栈小demo
- 面试问题(5)
- golang中的数组与C中数组的区别
- 关于使用SSH框架分页的实现以及容易出错的地方
- data:image/png;base64
- React Native BLE蓝牙通信
- Javascript数组