leetcode 22:Generate Parentheses(15-10-9)
2015-10-08 22:33
585 查看
题目:
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:
思路:
我们可以用递归来解,left表示剩下的左括号数,right表示剩下的右括号数,那么当left==0且right==0时,说明左右括号已经全部写完,可以将string插入到vector。
如果left>0就往string中添加一个'(',如果right>0就往string中添加一个')'。
时间复杂度:O(2^n)
实现:
补充:其实也可以理解为回溯的思想,我们构建的状态空间树如下:
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
思路:
我们可以用递归来解,left表示剩下的左括号数,right表示剩下的右括号数,那么当left==0且right==0时,说明左右括号已经全部写完,可以将string插入到vector。
如果left>0就往string中添加一个'(',如果right>0就往string中添加一个')'。
时间复杂度:O(2^n)
实现:
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); } } };
补充:其实也可以理解为回溯的思想,我们构建的状态空间树如下:
相关文章推荐
- leetcode29
- 网卡驱动的流程分析
- iOS 循环引用问题
- usaco Big Barn
- CentOS 7 网络配置
- HDU 1251 统计难题 (字典树)
- 表单和 HTML 辅助方法– ASP.NET MVC 4 系列
- 双向链表
- 排序算法
- 排序算法
- 一种异步作业处理请求任务的简单实现(以短信发送为例)
- ROS(10):mac 下树莓派Raspberry Pi 烧录 img
- 个人记录
- 浏览器常用的功能
- hdu5289 RMQ+二分
- Maven2的配置文件settings.xml
- 文本框和图片在一行,图片高一头的解决办法
- 《机器学习实战》学习笔记:利用Adaboost元算法提高分类性能
- SQL增删改查语句格式参考二
- Java gui设计