螺旋矩阵 IIPython解法

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

例:

螺旋矩阵 IIPython解法_第1张图片

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

解析:

按顺序填入即可,不用包含任何算法,处理好边界和中心即可。

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        matrix = [[0] * n for _ in range(n)]

        left, right, up, down = 0, n-1, 0, n-1
        number = 1

        while left < right and up < down:

            # 从左到右
            for x in range(left, right):  # 注意最右边留一个,使得每次循环填入的数据量相同。
                matrix[up][x] = number
                number += 1
            
            # 从上到下
            for x in range(up, down):
                matrix[x][right] = number
                number += 1
            
            # 从右到左
            for x in range(right, left, -1):
                matrix[down][x] = number
                number += 1
            
            # 从下到上
            for x in range(down, up, -1):
                matrix[x][left] = number
                number += 1
            
            # 缩小范围
            left += 1
            right -= 1
            up += 1
            down -= 1

        # n为奇数时,中间呈现单独的一个数需要单独处理
        if n % 2:
            matrix[n // 2][n // 2] = number
        
        return matrix




你可能感兴趣的:(Python,矩阵,linq,蓝桥杯,python)