zoukankan      html  css  js  c++  java
  • Generate Parentheses

    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:

    "((()))", "(()())", "(())()", "()(())", "()()()"

    思路:

      dfs

    我的代码:

    public class Solution {
        public List<String> generateParenthesis(int n) {
            List<String> rst = new ArrayList<String>();
            if( n < 1)  return rst;
            helper(rst, n, n, "");
            return rst;
        }
        public void helper(List<String> list, int left , int right, String s)
        {
            if(left == 0 && right == 0)
            {
                list.add(s);
                return;
            }
            if(left > 0)
                helper(list, left - 1,right, s+"(");
            if(left < right)
                 helper(list, left, right - 1, s+")");
        }
    }
    View Code

    学习之处:

    • 此问题最终转化成了二叉树的问题,二叉树的遍历用DFS,二叉树如下图所示。
    • 递归方程的写法,画图即可明了,left > 0 继续加“(” left < right的时候 加上“)”。
    • 确定递归方程看前两行就可以了,实际程序如何压栈,弹栈,仔细考虑一下,便很清楚明了了。

  • 相关阅读:
    JVM内存模型与类加载机制
    JS 实现动态轮播图
    Jedis & spring-data-redis
    JAVA反射机制与动态代理
    JavaScript -- 筑基
    IO流与装饰者模式
    ES&IK环境搭建
    Elasticsearch笔记
    DQL
    DDL--DML
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4322701.html
Copyright © 2011-2022 走看看