您的位置:首页 > 理论基础 > 计算机网络

https://leetcode.com/problems/spiral-matrix-ii/

2015-04-27 11:35 316 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: