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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章