LeetCode-22-Generate-Parentheses 记忆化搜索,Python类变量,set强转list

来源:互联网 发布:mac iphoto gif 编辑:程序博客网 时间:2024/06/16 06:46

用递归的记忆化搜索枚举出n组括号的情况


class Solution(object):    dp=[]    def generateParenthesis(self, n):        """        :type n: int        :rtype: List[str]        """        while(n>=len(self.dp)):self.dp.append(-1)        if self.dp[n]!=-1:return self.dp[n]        if n==0 :             self.dp[0]=[]            return []        if n==1 :             self.dp[1]=["()"]            return ["()"]        ans=set()        for i in range(1,n):            t1=self.generateParenthesis(i)            t2=self.generateParenthesis(n-i)            for j in t1:                for k in t2:                    ans.add(j+k)        t3=self.generateParenthesis(n-1)        for j in t3:            ans.add("("+j+")")        self.dp[n]=list(ans)        return self.dp[n]