22. 括号生成
· 约 1 分钟阅读 · – 次阅读
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1: 输入:n = 3 输出:[”((()))”,”(()())”,”(())()”,”()(())”,”()()()”]
示例 2: 输入:n = 1 输出:[”()”]
提示: 1 <= n <= 8
回溯算法
左右括号从 n 开始递减 剩余左括号总数要小于等于右括号
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def helper(result, left, right):
if left == 0 and right == 0:
ans.append(''.join(result))
return
if left == right:
result.append('(')
helper(result, left-1, right)
result.pop()
elif left < right:
if left > 0:
result.append('(')
helper(result, left-1, right)
result.pop()
result.append(')'),
helper(result, left, right-1)
result.pop()
ans = []
result = []
helper(result, n, n)
return ans