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

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
        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值