Generate Parentheses
来源:互联网 发布:小票打印机软件 编辑:程序博客网 时间:2024/05/29 06:45
- 题目
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
给定 n = 3, 可生成的组合如下:
“((()))”, “(()())”, “(())()”, “()(())”, “()()()” - 算法
这道题我们可以用递归来做。每次递归函数中记录左括号l和右括号r的剩余数量,当有l>0时,我们可以直接打印左括号,r>0时,如果此时r>l(剩余的右括号大于左括号,打印过的左括号大于右括号)这时可以打印右括号,当r==0并且l==0时,我们得到一种结果
public ArrayList<String> generateParenthesis(int n) { // Write your code here ArrayList<String> res = new ArrayList<String>(); if (n <= 0) { return res; } helper(n, n, new String(), res); return res; } public void helper(int l, int r, String item, ArrayList<String> res) { if (l == 0 && r == 0) { //左右括号剩余数量为0,递归结束 res.add(item); } if (l > 0) { //剩余有左括号直接打印 helper(l - 1, r, item + "(", res); } if (r > 0 && r > l) {//剩余有右括号,并且打印的左括号大于右括号 helper(l, r - 1, item + ")", res); } }
python
def helper(self, l, r, item, res): if l == 0 and r == 0: res.append(item) return if l > 0: self.helper(l - 1, r, item + '(', res) if r > 0 and r > l: self.helper(l, r - 1, item + ')', res) def generateParenthesis(self, n): # Write your code here if n <= 0: return [] res = [] self.helper(n, n, '', res) return 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
- 机器人走方格II
- 两张图理解仿射变换和投影变化的差异
- 性能优化之YUICompressor压缩JS、CSS
- 两个链表的第一个公共结点
- 字符串加密
- Generate Parentheses
- Iometer学习笔记二:详解“Disk Target Tab”
- ARM Linux对中断的处理--中断管理系统的初始化
- Apache 不能列目录解决 -- server-generated directory index forbidden by Options directive
- [生存志] 第74节 孔子集结诗经
- POI读取Excel模板文件,另存新的文件
- Iometer学习笔记之三:详解“Access Specifications Tab”
- Fibonacci(大数的计算及取部分位)
- Telcom系统