Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. class Solution:
  2. def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
  3. ret = []
  4. maxRow = len(matrix)
  5. if(not matrix):
  6. return ret
  7. maxColSize = len(matrix[0])
  8. begRowZone = 0
  9. endRowZone = maxRow - 1
  10. endColZone = maxColSize - 1
  11. begColZone = 0
  12. numCols = 0
  13. across=True
  14. acrossRev = False
  15. loop = len(ret)<maxRow*maxColSize
  16. while(loop):
  17. tmp = []
  18. if(across):
  19. for i in range(begColZone,endColZone+1):
  20. if not acrossRev:
  21. tmp.append(matrix[begRowZone][i])
  22. else:
  23. tmp.append(matrix[endRowZone][i])
  24. if(acrossRev):
  25. tmp = tmp[::-1]
  26. endRowZone -=1
  27. else:
  28. begRowZone+=1
  29. acrossRev = not acrossRev
  30. across = False
  31. ret+=tmp
  32. else:
  33. for i in range(begRowZone,endRowZone+1):
  34. if(numCols % 2 == 0):
  35. tmp.append(matrix[i][endColZone])
  36. else:
  37. tmp.append(matrix[i][begColZone])
  38. if(numCols % 2 == 0):
  39. endColZone -=1
  40. else:
  41. begColZone +=1
  42. tmp=tmp[::-1]
  43. numCols+=1
  44. ret+=tmp
  45. across=True
  46. if(len(ret)>=maxRow*maxColSize):
  47. loop = False
  48. return ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement