【发布时间】:2021-04-10 16:12:43
【问题描述】:
我正在尝试理解这个生成所有有效括号的解决方案。
我不明白的部分是递归如何找到所有不同的组合。当我调试代码时,我对整数“left”和“right”进行了观察。在 generateParenthesis 中输入 2 后,在“ans”填充有 1 个有效括号后,在“return ans”处,我看到变量“right”减少,使 if 语句“right
下面我将问题与在线 Python 调试器一起包含在内,以了解我在说什么。 https://onlinegdb.com/LMNYtq3iR
https://leetcode.com/problems/generate-parentheses/
def generateParenthesis(N):
ans = []
S = ''
left = 0
right = 0
ans = backtrack(N, S, left, right, ans)
def backtrack(N, S, left, right, ans):
print(left)
if len(S) == 2 * N:
ans.append(S)
if left < N:
backtrack(N, S+'(', left+1, right, ans)
if right < left:
backtrack(N, S+')', left, right+1, ans)
return ans
generateParenthesis(2)
【问题讨论】:
标签: python algorithm recursion backtracking