leetcode
来源:互联网 发布:js防水涂料粘接强度 编辑:程序博客网 时间:2024/06/05 05:02
Question22–Generate Parentheses
给你n对括号“()”,返回它们的所有有效组合。
算法
n对括号,即共有2n个括号字符。从第一位到第2n位,每次按照规则对已有字符串一位一位的构造。在构造过程中用一个left和right分别标记该构造串的左括号数和右括号数。
- 第一位必须是 ‘(’
- 当left等于right,只能增加 ‘(‘
- 当left大于right,且left等于n时,只能增加 ‘)’
- 当left大于right,且left小于n时,可以增加 ‘(’ 或 ‘)’ ,此时分裂出两个字符串,一个是原字符串增加 ‘(’ ,一个是增加 ‘)’ 。
code
vector<string> generateParenthesis(int n) { vector<string> parentheses; vector<int> left,right; string str; str.push_back('('); parentheses.push_back(str); left.push_back(1); right.push_back(0); for(int i=1; i<2*n; i++){ int j=0, m=parentheses.size(); while(j<m){ int a=left[j]-right[j]; if(a==0){ parentheses[j].push_back('('); left[j]++; } else if(a>0&&left[j]<n){ string newstr(parentheses[j]); parentheses[j].push_back('('); left[j]++; newstr.push_back(')'); parentheses.push_back(newstr); left.push_back(left[j]-1); right.push_back(right[j]+1); } else if(a>0&&left[j]==n){ parentheses[j].push_back(')'); right[j]++; } j++; } } return parentheses; }
算法时间复杂度
O(4^n)
阅读全文
0 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- Ajax返回xml类型数据
- 词向量源码解析:(6.1)fasttext源码解析
- 数据库-事务
- 代理模式
- LeetCode678. Valid Parenthesis String
- leetcode
- mongodb用户权限管理配置
- 使用jquery处理ajax返回的XML、无刷新技术
- Redis之五种数据类型
- [简单题]Change_it_up Python
- 反射:动态读取XML创建类实例并赋值
- Flask网页出现UnicodeDecodeError
- Android RecyclerView中item焦点乱跳问题(适用于PDA以及TV等带方向键的安卓设备)
- mysql存储过程的坑(关于declare与具体实现顺序)