Leetcode练习(Python):数组类:第59题:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

题目:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
思路:
是第54题的逆向过程
程序:
class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        if n <= 0:
            return []
        if n == 1:
            return [[1]]

        matrix = [[0 for i in range(n)] for i in range(n)]

        row_begin = 0
        row_end = n - 1
        column_begin = 0
        column_end = n - 1

        number = 1
        
        while row_begin <= row_end and column_begin <= column_end and number <= n * n:
            for index1 in range(column_begin, column_end + 1):
                matrix[row_begin][index1] = number
                number += 1
            row_begin += 1
            for index2 in range(row_begin, row_end + 1):
                matrix[index2][column_end] = number
                number += 1
            column_end -= 1
            for index1 in range(column_end, column_begin - 1, -1):
                if row_end >= row_begin:
                    matrix[row_end][index1] = number
                number += 1
            row_end -= 1
            for index2 in range(row_end, row_begin - 1, -1):
                if column_end >= column_begin:
                    matrix[index2][column_begin] = number
                number += 1
            column_begin += 1
        return matrix  
 
posted on 2020-04-20 16:30  桌子哥  阅读(892)  评论(0编辑  收藏  举报