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)的进阶版,其实两个题都可以用相似的方法来做,这里我用的方法是最简单粗暴的方法,直接按照顺时针螺旋遍历即可。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容