Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
# python 3
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
result = [0] * n
for i in range(n):
result[i] = [0] * n
level = 0
val = 1
while val <= n * n:
i = level
j = level
while j < n - level:
result[i][j] = val
val += 1
j += 1
if val > n * n:
return result
j -= 1
i += 1
while i < n - level:
result[i][j] = val
val += 1
i += 1
if val > n * n:
return result
i -= 1
j -= 1
while j > level - 1:
result[i][j] = val
val += 1
j -= 1
if val > n * n:
return result
j += 1
i -= 1
while i > level:
result[i][j] = val
val += 1
i -= 1
if val > n * n:
return result
level += 1
return result