题目:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
算法实现:
class Solution:
def generateMatrix(self, n):
a = []
temp1 = 1
k = n
for each in range(n):
a.append([])
for i in range((k + 1) // 2):
temp2 = temp1 + 4 * (n - 1) if n != 1 else temp1 + 1
m = i
y = i
for j in range(temp1, temp2):
if j < temp1 + n:
a[i].insert(y, j)
y += 1
elif j < temp1 + 2 * n - 1:
m += 1
a[m].insert(i, j)
elif j < temp1 + 3 * n - 2:
a[m].insert(i, j)
else:
m -= 1
a[m].insert(i, j)
n -= 2
temp1 = temp2
return a
思路:
假设要求n维螺旋矩阵,则需要循环(n + 1) // 2次,即矩阵由(n + 1) // 2个圈构成
每个圈有4 * (n - 1)个数,当n为1的时候有一个数。