美文网首页
【python语法细节】容易出错的点

【python语法细节】容易出错的点

作者: 何几时 | 来源:发表于2021-07-23 18:16 被阅读0次

leetcode 22

错误写法,把 subStr += '(' 当作参数放进去

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        # corner case
        if n == 0:
            return []
        
        retList = []
        self.backTracking(n, 0, 0, retList, "")
        return retList

    def backTracking(self, n, left, right, retList, subStr):
        # 剪枝条件
        if right > left:
            return

        # 终止条件
        if left == n and right == n:
            retList.append(subStr)
            return

        # 递归拆解
        if left < n:
            self.backTracking(n, left+1, right, retList, subStr+='(')
            self.backTracking(n, left, right+1, retList, subStr+=')')
        elif left == n:
            self.backTracking(n, left, right+1, retList, subStr+=')')

正确写法√√√:把 oneStr+'(' 放进去

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        leftNum, rightNum = 0, 0
        retList = []
        initStr = ""
        self.helper(n, initStr, leftNum, rightNum, retList)

        return retList

    
    def helper(self, n, oneStr, leftNum, rightNum, retList):
        # 剪枝操作
        if rightNum > leftNum:
            return

        # 终止条件
        if leftNum == n and rightNum == n and len(oneStr) == 2*n:
            retList.append(oneStr)
            return
        
        # 递归拆解
        if leftNum < n:
            self.helper(n, oneStr+'(', leftNum+1, rightNum, retList)

        if rightNum < leftNum:
            self.helper(n, oneStr+')', leftNum, rightNum+1, retList)

相关文章

网友评论

      本文标题:【python语法细节】容易出错的点

      本文链接:https://www.haomeiwen.com/subject/lffymltx.html