Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
把所有符合规则的()排列方式输出。
思路自己没想清楚,看了discuss。
用dfs的方法,l表示‘(’使用的数量,r表示‘)’使用的数量。
所以左括号<n的时候添加'(',右括号小于左括号时候添加")"
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
final=[]
l,r=0,0
def dfs(l,r,path):
if l==r==n:final.append(path)
if l<n:
dfs(l+1,r,path+'(')
if r<l:
dfs(l,r+1,path+')')
dfs(0,0,'')
return final

本文详细解析了如何使用深度优先搜索(DFS)算法生成所有合法的括号组合。通过递归地添加左括号和右括号,并确保任何时候右括号的数量不超过左括号的数量,最终实现了生成n对括号的所有可能的合法组合。
3192

被折叠的 条评论
为什么被折叠?



