函数返回null而不是数组对象,看起来非常简单

2024-04-26 12:16:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两种方法,spiralOrder和recurSpiral,其中spiralOrder是我的主要方法。这很奇怪,因为打印spiralArray,但是当我在下一行返回spiralArray时,它返回null。我觉得我错过了一些非常简单的事情。谢谢

class Solution(object):
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        spiralArray = []
        final = self.recurSpiral(matrix, spiralArray)
        return final

    def recurSpiral(self, matrix, spiralArray):
        print matrix
        if(len(matrix) == 0 or len(matrix[0]) == 0):
            print spiralArray
            return spiralArray

        if(len(matrix) <= 2 or len(matrix[0]) <= 2):
            self.firstThree(matrix, spiralArray)
            return spiralArray

        spiralArray = self.firstThree(matrix, spiralArray)
        print spiralArray

        notFirst = False
        for l in reversed(matrix[1:]):
            if(notFirst):
                spiralArray.append(l[0])
            else:
                notFirst = True
        print spiralArray
        self.recurSpiral(matrix[1:-1][1:-1], spiralArray)

    def firstThree(self, matrix, spiralArray):

        for i in matrix[0]:
            spiralArray.append(i)

        notFirst = False
        for j in matrix:
            if(notFirst):
                spiralArray.append(j[len(matrix[0])-1])
            else:
                notFirst = True

        notFirst = False
        for k in reversed(matrix[len(matrix)-1]):
            if(notFirst):
                spiralArray.append(k)
            else:
                notFirst = True

        print spiralArray
        return spiralArray

Tags: inselfforlenreturnifdefmatrix
1条回答
网友
1楼 · 发布于 2024-04-26 12:16:03

函数末尾缺少return语句。而不是:

self.recurSpiral(matrix[1:-1][1:-1], spiralArray)

应该是:

return self.recurSpiral(matrix[1:-1][1:-1], spiralArray)

否则,如果在该路径上到达函数的结尾,则函数将返回None。你知道吗

相关问题 更多 >