LeetCode22. Generate Parentheses (I thought I know Python...)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode22. Generate Parentheses (I thought I know Python...)相关的知识,希望对你有一定的参考价值。

I thought I know Python...

Actually , I know nothing...

这个题真想让人背下来啊,每一句都很帅!!!

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个括号的所有合法组合

在discuss区看到一个碾压级别的解法

https://discuss.leetcode.com/topic/17510/4-7-lines-python/13

 1 class Solution(object):
 2     def generateParenthesis(self, n):
 3         """
 4         :type n: int
 5         :rtype: List[str]
 6         """
 7         def g(p,left,right,res=[]):
 8             if left:
 9                 g(p+(,left-1,right)
10             if right>left:
11                 g(p+),left,right-1)
12             if not right:
13                 res += p,                   #相当于res.append(p)
14             return res
15         return g(‘‘,n,n)

作者说他在这个题中用了几个tricks,我试着找了一下:

line15: 用return 语句启动内层嵌套的函数

line7:   res=[]给参数传递可变类型,为内层函数分配所有g函数副本可用的变量名

line13: 最后的逗号用的太神了,没有逗号的话结果完全错误,用逗号把p变为元组

以上是关于LeetCode22. Generate Parentheses (I thought I know Python...)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 22. Generate Parentheses

leetcode22. Generate Parentheses

leetcode 22 -- Generate Parentheses

[leetcode-22-Generate Parentheses]

LeetCode 22. Generate Parentheses

LeetCode 22. Generate Parentheses