leetcode59. 螺旋矩阵 II

leetcode59. 螺旋矩阵 II

题目

思路

螺旋数组,一次螺旋4个方向(上行从左到右、右列从上到下、下行从右到左、左列从下到上),共执行(n//2)次螺旋。且对于n为奇数时,额外填充中心点nums[mid][mid] = n

每一次螺旋圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开的原则,这样这一圈才能按照统一的规则画下来。且每次螺旋后,需向内偏移一个单位。

代码

python 复制代码
class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        nums = [[0] * n for _ in range(n)]
        startx, starty = 0, 0               # 起始点
        loop, mid = n // 2, n // 2          # 迭代次数、n为奇数时,矩阵的中心点
        count = 1                           # 计数

        for offset in range(1, loop + 1) :      # 每循环一层偏移量加1,偏移量从1开始
            for i in range(starty, n - offset) :    # 从左至右,左闭右开
                nums[startx][i] = count
                count += 1
            for i in range(startx, n - offset) :    # 从上至下
                nums[i][n - offset] = count
                count += 1
            for i in range(n - offset, starty, -1) : # 从右至左
                nums[n - offset][i] = count
                count += 1
            for i in range(n - offset, startx, -1) : # 从下至上
                nums[i][starty] = count
                count += 1                
            startx += 1         # 更新起始点
            starty += 1

        if n % 2 != 0 :			# n为奇数时,填充中心点
            nums[mid][mid] = count 
        return nums
相关推荐
FanXing_zl29 分钟前
快速掌握线性代数:核心概念与深度解析
线性代数·算法·机器学习
点云SLAM3 小时前
四元数 (Quaternion)微分-四元数导数的矩阵表示推导(8)
线性代数·算法·计算机视觉·矩阵·机器人·slam·四元数
西西弗Sisyphus3 小时前
四元数(Quaternion)、叉积(Cross Product)与点积(Dot Product)之间的关系
线性代数·机器学习·行列式·叉积·点积·四元数
YaraMemo5 小时前
对称/Hermitian矩阵相关记号
线性代数·5g·矩阵·信息与通信
ChoSeitaku18 小时前
线代强化NO7|秩|矩阵的秩|向量组的秩|极大线性无关组|公式
线性代数·矩阵·概率论
不穿格子的程序员1 天前
从零开始写算法——二分-搜索二维矩阵
线性代数·算法·leetcode·矩阵·二分查找
dingzd951 天前
跨平台账号矩阵高效协同术
线性代数·矩阵·web3·facebook·tiktok·instagram·clonbrowser
一勺汤1 天前
YOLO12 改进、魔改|秩增强线性注意力RALA,通过增强 KV 缓冲与输出特征的矩阵秩,增强 YOLO 对小目标、复杂场景目标的识别能力
线性代数·yolo·矩阵·yolov12·yolo12·yolo12改进·小目标
资深web全栈开发1 天前
力扣2536子矩阵元素加1-差分数组解法详解
算法·leetcode·矩阵·golang·差分数组
西西弗Sisyphus1 天前
线性代数 - 理解求解矩阵特征值的特征方程
线性代数·矩阵·特征值·特征向量