class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
matrix = [[0]*n for _ in range(n) ]
up, down, left, right = 0, n-1, 0, n-1
number = 1
while (up < down) and (left < right):
for i in range(left, right):
matrix[up][i] = number
number += 1
for i in range(up, down):
matrix[i][right] = number
number += 1
for i in range(right, left, -1):
matrix[down][i] = number
number += 1
for i in range(down, up, -1):
matrix[i][left] = number
number += 1
up += 1
down -= 1
left += 1
right -= 1
if n % 2 != 0:
matrix[n//2][n//2] = number
return matrix
类似题目:
54.螺旋矩阵
剑指Offer 29.顺时针打印矩阵