题解 | #括号生成#
括号生成
https://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca?tpId=295&tqId=725&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# @auther zhangjunyi
# @time 20230309
# @param n int整型
# @return string字符串一维数组
#
class Solution:
def generateParenthesis(self , n: int) -> list[str]:
# write code here
#定义L1符号列表
L1 =["(",")"]
#定义L2收集每个步骤的括号生成的结果,初始化为空
L2=[]
#定义L3收集总共生成的结果,初始化为空
L3=[]
L4=[]
#定义变量i,j表示左右括号在L2中的数量,初始化为0
i=0
j=0
#定义回朔函数当j<i的时候,可以添加右括号,也可以添加左括号,用回朔法进行添加
def traversal(i,j,L1,L2):
if j==i and i==n:
L4.append(L2.copy())
return
for x in L1:
if x=="(" and i<n:
L2.append(x)
i+=1
traversal(i,j,L1,L2)
i-=1
L2.pop()
elif x==")" and j<i :
L2.append(x)
j+=1
traversal(i,j,L1,L2)
j-=1
print(L2)
print(L2[-1])
L2.pop()
return L4
L4 = traversal(i,j,L1,L2)
for x in L4:
L3.append("".join(x))
return L3

查看11道真题和解析