# Given an integer n, # generate a square matrix filled with elements from 1 to n2 in spiral order.## For example,# Given n = 3,## You should return the following matrix:# [# [ 1, 2, 3 ],# [ 8, 9, 4 ],# [ 7, 6, 5 ]# ]
AC
classSolution():defgenerateMatrix(self, n):
x = [[0for _ in range(n)] for __ in range(n)]
left, right, top, bottom, num = 0, n - 1, 0, n - 1, 1while top <= bottom:
for i in range(left, right + 1):
x[top][i], num = num, num+1for i in range(top + 1, bottom):
x[i][right], num = num, num+1if top < bottom:
for i in reversed(range(left, right + 1)):
x[bottom][i], num = num, num+1for i in reversed(range(top + 1, bottom)):
x[i][left], num = num, num+1
left, right, top, bottom = left + 1, right - 1, top + 1, bottom - 1return x
if __name__ == "__main__":
assert Solution().generateMatrix(3) == [[1, 2, 3], [8, 9, 4], [7, 6, 5]]