class Solution():
def generateMatrix(self, n):
x = [[0 for _ in range(n)] for __ in range(n)]
left, right, top, bottom, num = 0, n - 1, 0, n - 1, 1
while top <= bottom:
for i in range(left, right + 1):
x[top][i], num = num, num+1
for i in range(top + 1, bottom):
x[i][right], num = num, num+1
if top < bottom:
for i in reversed(range(left, right + 1)):
x[bottom][i], num = num, num+1
for 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 - 1
return x
if __name__ == "__main__":
assert Solution().generateMatrix(3) == [[1, 2, 3], [8, 9, 4], [7, 6, 5]]