59. 螺旋矩阵 II(medium)

给定一个正整数 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))