2017-09-23 87 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