Merge Two Sorted Lists (Python)
Validate Binary Search Tree (Python)

Generate Parentheses (Python)

kitt posted @ 2014年2月10日 17:16 in LeetCode , 3093 阅读

递归方法,确保在每一步右括号数 <= 左括号数 <= n即可。

class Solution:
    # @param an integer
    # @return a list of string
    def gen(self, s, leftParenNum, rightParenNum):
        if leftParenNum == rightParenNum == Solution.n:
            Solution.res.append(s)
            return
        if leftParenNum < Solution.n:
           self.gen(s + '(', leftParenNum + 1, rightParenNum)
        if rightParenNum < leftParenNum <= Solution.n:
           self.gen(s + ')', leftParenNum, rightParenNum + 1)
        return

    def generateParenthesis(self, n):
        Solution.n = n
        Solution.res = []
        self.gen('', 0, 0)
        return Solution.res
Avatar_small
tianjinxiaohuoer 说:
2014年8月08日 00:56

kitt 你好,
请问这个解法里面有的地方用self., 有的地方用Solution.,有什么区别吗?
或者这种用法叫什么呢我自己搜一下也行的:)

多谢多谢

Avatar_small
alexchonglian 说:
2014年11月12日 11:50

@tianjinxiaohuoer: self.variable是object的成员变量 Solution.variable是类变量

Avatar_small
alexchonglian 说:
2014年11月12日 11:57

@tianjinxiaohuoer: 在这里没有区别 因为只instantiate了一个Solution object,如果有多个Solution的实例,s1 s2 s3 ...情况就不同了,self.var的作用域仅限于某个object自身, Solution.res可以引起整个类的改变。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter