面试150 括号生成
思路
使用回溯法去生成,通过递归构建一个长度为 2*n 的路径 path,每一步尝试添加一个左括号或右括号。约束条件是:左括号数量不能超过 n,右括号数量不能超过已添加的左括号数量,从而保证括号始终合法。当路径长度达到 2n 时,将当前路径作为一个合法组合加入结果集。通过不断尝试和回溯,枚举出所有可能的有效括号组合。
class Solution:def generateParenthesis(self, n: int) -> List[str]:self.path=[]self.result=[]def backtracking(left,right,n):if len(self.path)==2*n:self.result.append(''.join(self.path[:]))if left<n:self.path.append('(')backtracking(left+1,right,n)self.path.pop()if right<left:self.path.append(')')backtracking(left,right+1,n)self.path.pop()backtracking(0,0,n)return self.result