22. 括号生成
解法一:暴力
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def generate(A): #回溯生成函数
if len(A) == 2*n: #递归出口
if valid(A): #调用验证
res.append(''.join(A))
return
#经典回溯
A.append('(')
generate(A)
A.pop()
A.append(')')
generate(A)
A.pop()
def valid(A): #验证函数
bal = 0 #balance,遇到左括号+1,右括号-1
for ch in A:
if ch == '(': bal += 1
else: bal -= 1
if bal < 0: return False #若右括号先出现
return bal == 0
res = []
generate([])
return res解法二:回溯
最后更新于