Generate Parentheses
来源:互联网 发布:多益网络校招java面试 编辑:程序博客网 时间:2024/06/04 19:05
原题:
即给定一个整数n,返回n对小括号排列的所有情况,结果存储在List<String>里。
思考过程:
独立思考未果,借鉴一下别人的思路,发现这道题要用递归。还看见有人把它和二叉树联系在了一起,豁然开朗,大受启发。原博客地址:点击打开链接。一开始仿照原博客将结果存在Vector里,结果leetCode不承认这个类。
解题思路:
参见原博客画的二叉树。递归函数要传递:左右括号的个数、结果集、当前字符串。每次递归进行判断,左括号、右括号是否都有n个,如果是,将结果添加到结果集;继续判断左括号个数是否到了n个,如果不是,当前字符串末尾加上“(”,左括号数加一,继续遍历;继续判断右括号数是否小于左括号,如果是,当前字符串末尾加“)”,右括号数加一,继续遍历。以此类推。
结果代码:
public List<String> generateParenthesis(int n) { List<String> res = new ArrayList<>(); recursive(n,n,"",res); return res; } public void recursive(int l,int r,String s,List<String> res){ if ((l == 0) && (r == 0)) res.add(s);//让l和r递减的形式,省得为了控制而传递参数n if (l > 0) recursive(l - 1,r,s + "(",res); if (l < r) recursive(l,r - 1,s + ")",res); }可以说写得及其精简。
阅读全文
0 0
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- Generate Parentheses
- LinkedBlockingQueue用法
- HTML5 单页应用/框架
- r画中国地图
- HashMap、TreeMap、HashTable区别
- 什么是“判定问题”?(1)- 可计算性理论与计算复杂性理论
- Generate Parentheses
- “新零售 智能未来”——2017亿欧峰会华东召开在即
- vagrant
- 三个实例演示JavaThread Dump 日志分析
- Java 5种字符串拼接方式性能比较
- 前端面试那些坑之HTML篇
- python类型转换
- Android View requestLayout 与 onDraw跟onMeasure的关系(一)
- oracle 基本语法归纳