zoukankan      html  css  js  c++  java
  • 【leetcode】GenerateParentheses

    • 思路1

      这个题目也要从简单的例子入手,然后发现规律。

      1 ()

      2 ()(),(())

      3 ()()(), (())(), (()()), ()(()), ((()))

      规律是这样的 ,假设我们已经产生了n-1对括号的所有组合,那么在这个基础上我们可以产生所有的n对括号的组合,我们把一个(放在每个n-1对括号组合的开头,然后在每个每一个括号配好对的位置插入一个)。这样我们就产生了一个n对括号的组合。

    • 思路2:

      主要用到了递归的思想,递归时保证字符串中左括号数大于等于右括号数即可。

      1. 如果左括号数还没有用完,那么我们能继续放置左括号

      2. 如果已经放置的左括号数大于已经放置的右括号数,那么我们可以放置右括号 (如果放置的右括号数大于放置的左括号数,会出现不合法组合)

      所以,运用dfs在每一层递归中,如果满足条件先放置左括号,如果满足条件再放置右括号

      package leetcode.doit;

         

      import java.util.ArrayList;

      import java.util.Iterator;

      import java.util.LinkedList;

      import java.util.List;

         

      public class GenerateParentheses_my {

      public static void main(String[] args) {

      ArrayList ret = (ArrayList) generateParenthesis(3);

         

      //                 Iterator<String> it = ret.iterator();

      //                 while (it.hasNext()) {

      //                 System.out.println(it.next());

      //                 }

         

      }

         

      static List<String> generateParenthesis(int n) {

      List<String> result = new ArrayList<String>();

      if (n <= 0)

      return result;

      String s = new String();

      dfs(0, 0, n, s, result);

      return result;

      }

         

      public static void dfs(int left, int right, int n, String s,

      List<String> result) {

      System.out.println(s);

      if (left == n && left == right) {

      result.add(s);

      return;

      }

      if (left < n)

      dfs(left + 1, right, n, s + "(", result);

      if (right < left) {

      dfs(left, right + 1, n, s + ")", result);

      }

      }

      }

         

  • 相关阅读:
    ImageButton按压效果失效
    ListView.setSelection(position)不起作用
    活动(Activity)
    在微信公众号开发(微站)过程中用Zepto/jquery的on/live绑定的click事件点击无效(不能执行)
    解决Angular图片ng-src指令不马上更新图片的问题
    Angular简易分页设计(二):封装成指令
    Angular回到顶部按钮指令
    Angular简易分页设计(一):基本功能实现
    Python之反射,正则
    Python之模块,迭代器与生成器
  • 原文地址:https://www.cnblogs.com/keedor/p/4378034.html
Copyright © 2011-2022 走看看