码迷,mamicode.com
首页 > 其他好文 > 详细

59. 螺旋矩阵 II

时间:2020-01-28 21:22:15      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:取值   上下左右   数字   matrix   生成   排列   int   ret   start   

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

 

本题思路:先生成一个 n^2的矩阵,定义上下左右四个边界变量

1.本题最精妙的地方就是 边界的迭代刚好与矩阵中数字填入顺序相同  

  for  i in range(l,r+1):

  for i in range(t,b+1):

  for i in range(r,l-1,-1):

  for i in range(b,t-1,-1):

2.第二个学到的点就是 range(start,end,step)的用法,在start > end 时,即倒叙打印时,step 应该设为-1

  

 

 

假设 n =4 ,那么每次取值的数为:  4 3 3 2 2 1 1

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        maxtrix = [[0 for _ in range(n)] for _ in range(n)]
        l ,r ,t, b = 0 , n-1 , 0 , n-1
        num,tar = 1,n ** 2
        while num <= tar:
            print(‘1‘,(l,r,t,b))
            for  i in range(l,r+1):
                maxtrix[t][i] = num
                num +=1
            t +=1
            print(‘2‘,(l,r,t,b))
            for i in range(t,b+1):
                maxtrix[i][b] = num
                num += 1
            r -= 1
            print(‘3‘,(l,r,t,b))

            for i in range(r,l-1,-1):
                maxtrix[b][i] = num
                num+=1
            b -=1
            print(‘4‘,(l,r,t,b))

            for i in range(b,t-1,-1):
                maxtrix[i][l] = num
                num+=1
            l +=1
            print(‘5‘,(l,r,t,b))

        return maxtrix
        

 

59. 螺旋矩阵 II

标签:取值   上下左右   数字   matrix   生成   排列   int   ret   start   

原文地址:https://www.cnblogs.com/ChevisZhang/p/12238647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!