题解 | #括号生成#

括号生成

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

全部评论
回朔的时候不能用remove函数,移除L[-1],用Pop函数比较合适,remove移动的位置不是最后一个元素
点赞 回复 分享
发布于 2023-03-09 14:34 广东

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务