这里backtrack只传了参数,所以当前方法backtrack执行之后才会改变sol的值所以不用回溯
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res = []
sol = ""
def backtrack(sol,left,right,n):
if left==n and right==n:
res.append(sol[:])
return
if right>left:
return
if left<n:
backtrack(sol+"(",left+1,right,n)
if right<n:
backtrack(sol+")",left,right+1,n)
return
backtrack(sol,0,0,n)
return res
此方法在backtrack之前就改变了sol并把值传入了,所以回溯的时候sol的值已经改变了需要pop最后的
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res = []
sol = ""
def backtrack(sol,left,right):
if len(sol) == 2*n:
res.append(sol[:])
return
if left > 0:
sol += "("
backtrack(sol,left-1,right)
sol = sol[:-1]
if right > left:
sol += ")"
backtrack(sol,left,right-1)
sol = sol[:-1]
return
backtrack(sol,n,n)
return res