Generate Parentheses 产生所有括号组合 @LeetCode
来源:互联网 发布:大数据架构师证书 编辑:程序博客网 时间:2024/06/06 04:09
要点:必须满足左括号数目要大等于右括号数目
典型的递归题,画出图来就很好理解。1,2分别对应着两种特殊情况。
package Level3;import java.util.ArrayList;/** * Generate Parentheses * * 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:"((()))", "(()())", "(())()", "()(())", "()()()" * */public class S22 {public static void main(String[] args) {System.out.println(generateParenthesis(3));}public static ArrayList<String> generateParenthesis(int n) {ArrayList<String> list = new ArrayList<String>();rec(n, 0, 0, "", list);return list; }public static void rec(int n, int left, int right, String s, ArrayList<String> list){// invariant必须满足左括号数目要大等于右括号数目if(left < right){return;}// 如果左右括号数目相等则添加到listif(left==n && right==n){list.add(s);return;}// 左括号已满,只能添加右括号if(left == n){rec(n, left, right+1, s+")", list);return;}rec(n, left+1, right, s+"(", list);// 继续添加左括号rec(n, left, right+1, s+")", list);// 继续添加右括号}}
Again:
一种新的写法,left,right表示手上有的左右括号括号数量。因此条件要改变一些。
public class Solution { public ArrayList<String> generateParenthesis(int n) { ArrayList<String> ret = new ArrayList<String>(); rec(n, n, "", ret); return ret; } public void rec(int left, int right, String s, ArrayList<String> ret){ if(left==0 && right==0){ ret.add(s); return; } if(left==0){ rec(left, right-1, s+")", ret); return; } if(right==0){ return; } if(left > right){ return; } rec(left-1, right, s+"(", ret); rec(left, right-1, s+")", ret); }}
- Generate Parentheses 产生所有括号组合 @LeetCode
- [LeetCode]-Generate Parentheses N个括号所有的组合数
- LeetCode--Generate Parentheses(括号组合排列)Python
- LeetCode OJ 之 Generate Parentheses (产生括号)
- Generate Parentheses (括号匹配)【leetcode】
- Generate Parentheses 产生括号的次数
- Generate Parentheses 生成合法的括号组合
- 生成所有括号匹配情况 Generate Parentheses
- Leetcode:Generate Parentheses 生成有效括号对
- LeetCode | Generate Parentheses(生成括号)
- LeetCode-22 Generate Parentheses(合法括号情况)
- LeetCode 22 Generate Parentheses(生成括号)
- LeetCode 22. Generate Parentheses(生成括号)
- LeetCode 22 Generate Parentheses(生成括号)
- 22.Generate Parentheses&n对括号的全部有效组合
- Leetcode22. Generate Parentheses(生成有效的括号组合)
- 【leetcode】括号符匹配问题(Parentheses):Valid Parentheses|Generate Parentheses|LongestValid Parentheses
- leetCode 22.Generate Parentheses (生成括号) 解题思路和方法
- 嵌入式编程中关于const,static,extern,volatile的用法
- [LeetCode] Word Break II
- LeetCode题解:Spiral Matrix I and II
- 德国波恩出差记(一)
- LeetCode题解:Clone Graph
- Generate Parentheses 产生所有括号组合 @LeetCode
- Linux Ramdisk启动方式下文件系统兼容性快速排查。
- 企业软件管理FileWave
- const char * ptr;char * const cp 的区别
- LeetCode题解:Remove Duplicates from Sorted Array I and II
- hdoj1106 ( strtok函数 )
- OSX: 切换10.9用户桌面壁纸的脚本
- 推荐一个git源码托管网站
- c对象创建