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  
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 Leetcode练习(Python):动态规划类:第221题:最大正方形:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 【LeetCode-数组】旋转矩阵(顺时针/逆时针) Leetcode练习(Python):第283题:移动零:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 Leetcode练习(Python):数组类:第53题:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 Python之二维数组N*N顺时针旋转90度 LeetCode——二维矩阵最大正方形面积 Leetcode练习(Python):第303题:区域和检索 - 数组不可变:给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 Leetcode练习(Python):数组类:第169题:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 Leetcode练习(Python):数组类:第34题:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 Leetcode练习(Python):数组类:第15题:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM