4. 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
题解:
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
result = []
self.backtracking(n, result, 0, 0, "")
return result
def backtracking(self, n, result, left, right, s):
# 右括号数目大于左括号数目就不符合有效括号组合
if right > left:
return
if left == n and right == n:
result.append(s)
return
# 先加左括号
if left < n:
self.backtracking(n, result, left+1, right, s + "(")
# 右边的括号小于左边的括号,加右边的括号
if right < left:
self.backtracking(n, result, left, right+1, s + ")")