Generate Parentheses
2015-07-24 14:54
246 查看
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=3时候的情况:这里省略了一些中间步骤。
![](http://img.blog.csdn.net/20150724144512922?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其实可以这么来看,影响递归条件的核心是括号的合法性。在打印的过程中要满足左括号的个数大于等于右括号的个数。(如“(()”,“(( ))”) 按照这个规则,我们设剩余的左括号个数为left,右括号剩余为right,如果 left right 都为0 说明打印完了,就可以将结果保存。如果left 剩的比right要多,那么不能够打印左括号,因为会违背规则,否则可以打印。如果left>0 可以直接打印左括号。
代码:
对递归的理解还有待深入。。
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
这道题拿过来感觉直观上就是一道递归的题,那么就按这个思路去想。然而对递归还不是很熟练,在网上搜到了一个简洁的解法。但是在实现的时候只出来了一组解,说明我对于这个算法还不是真正明白了。有时间再做一遍这道题。
画一个n=3时候的情况:这里省略了一些中间步骤。
其实可以这么来看,影响递归条件的核心是括号的合法性。在打印的过程中要满足左括号的个数大于等于右括号的个数。(如“(()”,“(( ))”) 按照这个规则,我们设剩余的左括号个数为left,右括号剩余为right,如果 left right 都为0 说明打印完了,就可以将结果保存。如果left 剩的比right要多,那么不能够打印左括号,因为会违背规则,否则可以打印。如果left>0 可以直接打印左括号。
代码:
package leetcode; import java.util.ArrayList; import java.util.List; public class GenerateParenthesis { public static void main(String[] args) { GenerateParenthesis g = new GenerateParenthesis(); List<String> res =g.generateParenthesis(3); for (String string : res) { System.out.println(string); } } public List<String> generateParenthesis(int n) { List<String> res = new ArrayList<String>(); generate(n,n,"",res); return res; } public void generate(int left,int right,String temp,List<String> res){ if(left ==0 && right == 0){ res.add(temp); } if(left>0){ // System.out.println("add ("); generate(left-1,right,temp+'(',res); } if(right>0 && right > left){ // System.out.println("add )"); generate(left,right-1,temp+')',res); } } }
对递归的理解还有待深入。。
相关文章推荐
- c#封装自己写的dll,和引用自己的dll
- 图像处理------直方图均衡化
- 图像处理------直方图均衡化 分类: 视频图像处理 2015-07-24 14:54 32人阅读 评论(0) 收藏
- 异常处理
- 类的高级特征
- HDU 3635 Dragon balls -并查集
- quartz实现动态配置以及启动与暂停
- 图像处理------光源退化效果
- 图像处理------光源退化效果
- 图像处理------光源退化效果
- 图像处理------光源退化效果
- 如何用工程手段解决前端开发和部署优化的综合问题
- Stream,byte[],LZMA
- hdu 5289 OO’s Sequence 2015 Multi-University Training Contest 1
- POJ 1905 - Expanding Rods 【二分/三分】
- 图像处理------光源退化效果
- 图像处理------光源退化效果
- JS 控制文本框只能输入中文/中文、英文、数字、空格/中文、英文、数字、小数点
- SGU 281.Championship
- 图像处理------光源退化效果 2015-07-24 14:53 30人阅读 评论(0) 收藏