LeetCode 22. Generate Parentheses--Python 解法--广度优先、深度优先解法

此文首发于我的个人博客:LeetCode 22. Generate Parentheses–Python 解法–广度优先、深度优先解法 — zhang0peter的个人博客


LeetCode题解文章分类:LeetCode题解文章集合
LeetCode 所有题目总结:LeetCode 所有题目总结


题目地址:Generate Parentheses - LeetCode


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:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

这道题目看起来不难,只要把所有的可能性都输出即可。

可以深度优先,或者广度优先解决。

广度优先的Python解法如下,先输出 ()()()...

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        def helper(s='', left=0, n=0):
            if n == 0:
                self.res.append(s+')'*left)
                return
            if left > 0:
                helper(s+')', left-1, n)
            helper(s+'(', left+1, n-1)
        self.res = []
        helper('', 0, n)
        return self.res

深度优先解法如下,先 ((()))

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        def helper(s='', left=0, n=0):
            if n == 0:
                self.res.append(s+')'*left)
                return
            helper(s+'(', left+1, n-1)
            if left > 0:
                helper(s+')', left-1, n)
        self.res = []
        helper('', 0, n)
        return self.res
发布了516 篇原创文章 · 获赞 159 · 访问量 51万+

猜你喜欢

转载自blog.csdn.net/zhangpeterx/article/details/104080796