LeetCodeP22 Generate Parentheses
来源:互联网 发布:java 判断字段类型 编辑:程序博客网 时间:2024/05/14 21:24
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,左右括号数为n,左右括号数为2n。从1到2n的合法排列满足:左括号数大于等于右括号数。假设在第K个位置处,剩余左括号数为leftNum,剩余右括号数为rightNum,则如果leftNum>0,可以放置左括号。如果rightNum > leftNum,则可以放置右括号。当leftNum与rightNum 相等时,说明找到一个合法序列。
代码:
public class Solution { public List<String> generateParenthesis(int n) { ArrayList<String> results = new ArrayList<>(); generate(n-1, n, "(", results); return results; } /** * 根据括号数递归生成合法序列 * @param leftNum 剩余左括号数 * @param rightNum 剩余右括号数 * @param s 当前序列的字符串 * @param results 结果集 */ private void generate(int leftNum, int rightNum, String s , ArrayList results) { if (leftNum == 0 && rightNum == 0) {//找到一个序列 results.add(s); } if (leftNum > 0) {//放置左括号 generate(leftNum-1, rightNum, s+"(", results); } //放置右括号 if (rightNum > 0 && leftNum < rightNum) { generate(leftNum, rightNum-1, s+")", results); } }}
0 0
- LeetCodeP22 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
- 安卓中Activity的onStart()和onResume()
- SQL/PLSQL:oracle存储过程 集合类型 代码示例
- 更改表中列的顺序,当中插入一个列.而不是在后面添加
- Pixhawk原生固件PX4之正确显示log时间
- grep命令
- LeetCodeP22 Generate Parentheses
- tppabs批量删除
- Windows10安装HTK3.4.1
- redis
- 每日一道算法题1 ——把二元查找树转变成排序的双向链表
- 关于java中i=i++的问题
- 垃圾回收
- JPA 之 深入浅出 --实例演示
- Linux设备树语法详解