LeetCode OJ——Generate Parentheses
来源:互联网 发布:excel数据分行显示 编辑:程序博客网 时间:2024/05/07 22:02
题目:
代码:
class Solution {public: vector<string> generateParenthesis(int n) { vector<string> vec; string s; fun(vec, s, n, n); return vec; } bool fun(vector<string> &vec, string s, int left, int right) { //判断条件 if (left == 0 && right == 0){ vec.push_back(s); return true; } if (left> 0 ) { s.push_back('('); fun(vec, s, --left, right); s.pop_back(); left++; } if (left < right ) { s.push_back(')'); fun(vec, s, left, --right); s.pop_back(); } }};
结果:
思路:
(1)在第一版代码中,实际运用到了stack,对stack考虑“(”的入栈与出栈,当栈为空时,对string类型的s添加“)”。结果就是出现重复结果并伴有结果不全的问题。
(2)然后以师兄的思路进行重新整理。最开始有n个“((…(”和“))…)”。分别记为left=n, right=n。
- 当left==0 && right==0时,表示所有的括号均被使用完,则递归结束。
- 当left>0时,表示“(”括号还没被使用完,可以向string中继续添加。
- 当left < right时,表示字符串string中左括号数 > 右括号数,此时才可以向string中添加“)”。
- 在提交之前同样出现了递归重复的现象,后来发现是没有加
s.pop_back();
这2行代码。其作用是退出当前这一轮递归。(本人递归还木有理解和运用的很好,汗(⊙﹏⊙))。
left++;
0 0
- LeetCode OJ——Generate Parentheses
- LeetCode OJ:Generate Parentheses
- LeetCode OJ - Generate Parentheses
- [LeetCode OJ]Generate Parentheses
- LeetCode OJ Generate Parentheses
- LeetCode OJ - Generate Parentheses
- <LeetCode OJ> 22. Generate Parentheses
- LeetCode OJ-22-Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- leetcode——Generate Parentheses
- leetcode——Generate Parentheses
- LeetCode OJ-22.Generate Parentheses(回溯法)
- Leetcode OJ 22 Generate Parentheses [Medium]
- Leetcode OJ 22 Generate Parentheses [Medium]
- leetcode 022 —— Generate Parentheses
- LeetCode题解——Generate Parentheses
- POST
- 开源C/C++网络库比较 ace &&bosst &&libEvent
- 地图定位
- 错排问题-杭电oj1465
- HDU 1209 Clock(模拟)
- LeetCode OJ——Generate Parentheses
- uint8_t , uint16_t,uint32_t,uint64_t
- UIStactView 新特性语法新介绍
- ThinkPHP学习-1
- YII 路径总结
- javascript冒泡排序
- 源代码管理和git 使用
- ios 方面常见的一些面试问题
- 内购广告换肤/KVO/KVC