Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
- ret = []
- maxRow = len(matrix)
- if(not matrix):
- return ret
- maxColSize = len(matrix[0])
- begRowZone = 0
- endRowZone = maxRow - 1
- endColZone = maxColSize - 1
- begColZone = 0
- numCols = 0
- across=True
- acrossRev = False
- loop = len(ret)<maxRow*maxColSize
- while(loop):
- tmp = []
- if(across):
- for i in range(begColZone,endColZone+1):
- if not acrossRev:
- tmp.append(matrix[begRowZone][i])
- else:
- tmp.append(matrix[endRowZone][i])
- if(acrossRev):
- tmp = tmp[::-1]
- endRowZone -=1
- else:
- begRowZone+=1
- acrossRev = not acrossRev
- across = False
- ret+=tmp
- else:
- for i in range(begRowZone,endRowZone+1):
- if(numCols % 2 == 0):
- tmp.append(matrix[i][endColZone])
- else:
- tmp.append(matrix[i][begColZone])
- if(numCols % 2 == 0):
- endColZone -=1
- else:
- begColZone +=1
- tmp=tmp[::-1]
- numCols+=1
- ret+=tmp
- across=True
- if(len(ret)>=maxRow*maxColSize):
- loop = False
- return ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement