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

时间:2017-09-23 22:11:43

标签: python python-2.7

我有两个方法,spiralOrder和recurSpiral,其中spiralOrder是我的主要方法。这很奇怪因为print 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

1 个答案:

答案 0 :(得分:0)

您在函数结束时缺少return语句。而不是:

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

应该是:

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

否则,如果在该路径上到达函数的末尾,则函数将返回None