1. 程式人生 > 其它 >LeetCode 22 括號生成

LeetCode 22 括號生成

技術標籤:資料結構與演算法leetcode資料結構演算法

數字 n代表生成括號的對數,請你設計一個函式,用於能夠生成所有可能的並且 有效的 括號組合。

示例:

輸入:n = 3
輸出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

解題思路:

我們可以只在序列仍然保持有效時才新增 '(' or ')',我們可以通過跟蹤到目前為止放置的左括號和右括號的數目來做到這一點,

如果左括號數量不大於 nn,我們可以放一個左括號。如果右括號數量小於左括號的數量,我們可以放一個右括號。

Python程式碼:

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        if n == 0:
            return []
        result = []
        self.helpler(n, n, '', result)
        return result
    def helpler(self, l, r, item, result):
        if l > r:
            return
        if l == 0 and r == 0:
            result.append(item)
        if l > 0:
            self.helpler(l-1, r, item+'(', result)
        if r > 0:
            self.helpler(l, r-1, item+')', result)