zoukankan      html  css  js  c++  java
  • LeetCode 22. 括号生成 【时间击败42.92%】 【内存击败99.07%】

     
    f(n)="("+f(n-1)+")
      +f(i)f(n-i)
      +f(n-i)f(i)
     
    举个例子:
     
    f(2)="("+f(1)+")"
      +"()"f(1)
      +f(1)"()"
     
     1 import java.util.ArrayList;
     2 import java.util.HashSet;
     3 import java.util.List;
     4 import java.util.Set;
     5 
     6 public class Solution {
     7     static public List<String> generateParenthesis(int n) {
     8         Set<String>[] al = new Set[n + 1];
     9         for (int i = 0; i < al.length; i++) al[i] = new HashSet<>();
    10         al[1].add("()");
    11         Set<String> set=dp(n, al);
    12         ArrayList<String>ans=new ArrayList<>(set.size());
    13         for (String s:set) ans.add(s);
    14         return ans;
    15     }
    16 
    17     static Set<String> dp(int n, Set<String>[] al) {
    18         if (al[n].size() != 0) return al[n];
    19 
    20         Set<String> a1 = dp(n - 1, al);
    21         for (String s : a1) al[n].add("(" + s + ")");
    22 
    23         for (int i = 1; i <= n / 2; i++) {
    24             Set<String> a2 = dp(i, al);
    25             Set<String> a3 = dp(n - i, al);
    26 
    27             for (String s1:a2){
    28                 for (String s2:a3){
    29                     al[n].add(s1+s2);
    30                     al[n].add(s2+s1);
    31                 }
    32             }
    33         }
    34         return al[n];
    35     }
    36 }
  • 相关阅读:
    延迟为程序集签名
    bootshrap会改变IE浏览器滚动条样式
    Spark算子选择策略
    kafka常用系统命令-1
    数据结构-树
    1.PyCharm 用法
    sql 语句用法
    linux命令
    linux命令
    es的相关知识二(检索文档)
  • 原文地址:https://www.cnblogs.com/towerbird/p/11573601.html
Copyright © 2011-2022 走看看