2017-02-08 1 views
0

Ich habe eine 2D-Quadrat-Liste der Größe n. Mein Zweck ist es, mit der Form einer Schlange hindurchzulaufen. Zum Beispiel:Gehen durch 2D-Liste mit einem Weg der Schlange

array = [[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]] 

Für diesen Fall Ergebnis sollte [1, 2, 3, 6, 9, 8, 7, 4, 5] sein.

Antwort

0
def spiral_array(arr): 
     if arr == []: return [] 
     up = 0; left = 0 
     down = len(arr)-1 
     right = len(arr[0])-1 
     direct = 0 # 0: go right 1: go down 2: go left 3: go up 
     res = [] 
     while True: 
      if direct == 0: 
       for i in range(left, right+1): 
        res.append(arr[up][i]) 
       up += 1 
      if direct == 1: 
       for i in range(up, down+1): 
        res.append(arr[i][right]) 
       right -= 1 
      if direct == 2: 
       for i in range(right, left-1, -1): 
        res.append(arr[down][i]) 
       down -= 1 
      if direct == 3: 
       for i in range(down, up-1, -1): 
        res.append(arr[i][left]) 
       left += 1 
      if up > down or left > right: return res 
      direct = (direct+1) % 4 

array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 

print(spiral_array(array)) # [1, 2, 3, 6, 9, 8, 7, 4, 5] 

Quelle: https://leetcode.com/problems/spiral-matrix/

+0

Danke für Hinweis. –

+0

willkommen, hoffe es hilft Ihnen Wenn etwas davon keinen Sinn ergibt oder wenn Sie weitere Informationen benötigen, um zu verstehen, wie und warum es funktioniert, zögern Sie nicht, zu kommentieren oder mehr zu fragen. – davedwards