0
点赞
收藏
分享

微信扫一扫

leecode 题目59 螺旋矩阵 II(python)

犹大之窗 2022-02-26 阅读 65

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

示例 1:
在这里插入图片描述

示例 2:

输入:n = 1
输出:[[1]]

参考bilibili写出的代码:

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        rowBegin,rowEnd = 0,n-1
        colBegin,colEnd = 0,n-1
        matrix = [[0 for _ in range(n)] for _ in range(n)]
        number = 1
        while(rowBegin <= rowEnd and colBegin <= colEnd):
            for i in range(colBegin,colEnd+1):
                matrix[rowBegin][i] = number
                number += 1
            rowBegin += 1
            
            for i in range(rowBegin,rowEnd+1):
                matrix[i][colEnd] = number
                number += 1
            colEnd -= 1

            if rowBegin <= rowEnd:
                for i in range(colEnd,colBegin-1,-1):
                    matrix[rowEnd][i] = number
                    number += 1
                rowEnd -= 1
            
            if colBegin <= colEnd:
                for i in range(rowEnd,rowBegin-1,-1):
                    matrix[i][colBegin] = number
                    number += 1
                colBegin += 1

        return matrix

该算法的难点主要在于上下左右四个方向起始位置的改变与转换,相关索引容易弄错

举报

相关推荐

0 条评论