https://leetcode.com/problems/spiral-matrix-ii/
先把n2个数字都放在list里 输出了就删除
有一个记录层数的变量 每输出一层就+1
这样才能确定将数字 从哪里开始 输出在具体哪个位置
还有一个记录还剩多少层的变量 还剩2层和1层的时候特殊处理
注意初始化一个n*n的数组的方法
solution = [([0] * n) for i in range(n)]
依旧是注意边界和数组下表的确定 n, 1, time,i什么的都要考虑清楚
class Solution:
# @return a list of lists of integer
def generateMatrix(self, n):
list=[]
solution=[]
for i in range(n**2):
list.append(i+1)
solution = [([0] * n) for i in range(n)]
time=0
x=n
while x>0:
if x>2:
for i in range(time,n-time):# fill in the first line
solution[time][i]=list[i-time]
list=list[n-time-time-1:]
for i in range(time+1,n-time-1): #fill in the right line
solution[i][n-time-1]=list[i-time]
list=list[n-time-time-1:]
for i in range(time,n-time)[::-1]: #fill in the last line
solution[n-time-1][i]=list[n-time-1-i]
list=list[n-time-time-1:]
for i in range(time+1,n-time-1)[::-1]:
solution[i][time]=list[n-time-1-i]
list=list[n-time-time-1:]
x=x-2
time=time+1
elif x==2:
for i in range(time,n-time):# fill in the first line
solution[time][i]=list[i-time]
list=list[2:]
for i in range(time,n-time)[::-1]: #fill in the last line
solution[n-time-1][i]=list[n-time-1-i]
x=x-2
time=time+1
else:#n==1
solution[time][time]=list[0]
x=x-2
time=time+1
return solution