美文网首页
59. 螺旋矩阵 II(medium)

59. 螺旋矩阵 II(medium)

作者: genggejianyi | 来源:发表于2019-05-30 23:30 被阅读0次

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
    示例:
    输入: 3
    输出:
    [
    [ 1, 2, 3 ],
    [ 8, 9, 4 ],
    [ 7, 6, 5 ]
    ]

    • show the code:
    class Solution:
        def generateMatrix(self, n: int) -> List[List[int]]:
            up_r,bottom_r,left_c,right_c,num,res = 0,n-1,0,n-1,1,[[0]*n for _ in range(n)]
            while up_r <= bottom_r and left_c <= right_c:
                #从左到右 
                for i in range(left_c,right_c+1):
                    res[up_r][i] = num
                    num += 1
                up_r += 1
                #从上到下
                for i in range(up_r,bottom_r+1):
                    res[i][right_c] = num
                    num += 1
                right_c -= 1
                #从右到左
                for i in range(right_c,left_c-1,-1):
                    res[bottom_r][i] = num
                    num += 1
                bottom_r -= 1
                #从下到上
                for i in range(bottom_r,up_r-1,-1):
                    res[i][left_c] = num
                    num += 1
                left_c += 1
            return res
    
    • 此题是上一题螺旋矩阵(medium)的进阶版,其实两个题都可以用相似的方法来做,这里我用的方法是最简单粗暴的方法,直接按照顺时针螺旋遍历即可。

    相关文章

      网友评论

          本文标题:59. 螺旋矩阵 II(medium)

          本文链接:https://www.haomeiwen.com/subject/pdqitctx.html