LeetCode 22 括號生成
阿新 • • 發佈:2021-01-13
數字 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)