2017-09-23 108 views
0

我有两个方法,spiralOrder和recurSpiral,其中spiralOrder是我的主要方法。这很奇怪,因为打印spiralArray,但是当我在下一行返回spiralArray时,它返回null。我觉得我错过了很简单的事情。谢谢函数返回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 
+0

此外,你应该给你使用的参数。 – Pierre

+0

@DanilSperansky它已经在那里,部分 –

+1

Python不会返回null。它有'无'。这意味着没有返回声明 –

回答

0

你在函数的最后缺少return语句。相反的:

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

它应该是:

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

否则,你的函数将返回None,如果这条道路上达到了函数的结束。

+0

另外,我有时会看到'firstThree'的返回值,而另外一些则希望修改其第二个参数。为了清楚起见,请始终使用返回值或始终期望第二个参数被修改。 – MondKin