leetcode59. 螺旋矩阵 II

leetcode59. 螺旋矩阵 II

题目

思路

螺旋数组,一次螺旋4个方向(上行从左到右、右列从上到下、下行从右到左、左列从下到上),共执行(n//2)次螺旋。且对于n为奇数时,额外填充中心点numsmidmid = 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
相关推荐
fpcc6 小时前
AI和大模型—矩阵相似
人工智能·线性代数·矩阵
wzdark8 小时前
动态规划算法的状态转移矩阵可视化分析5
算法·矩阵·动态规划
可爱系程序猿21 小时前
模型推理任务弹出找不到 cublas64_12.dll,CUDA 12 矩阵计算库按安装包核对
程序人生·线性代数·矩阵·电脑
DevOps老兵1 天前
【老计带你懂线性代数】09:特征值与特征向量,矩阵最本质的方向
线性代数·矩阵·pca·特征值·特征向量·pagerank
SomeOtherTime1 天前
电磁波基础相关(AI回答)
人工智能·线性代数
artificiali2 天前
880 第7章行列式
线性代数
爱刷碗的苏泓舒3 天前
RTKLIB Neville 插值法:源码推导与 GNSS 精密轨道应用
线性代数·rtklib·内维尔算法·neville
小飞象—木兮3 天前
经营分析核心思路:经营分析的六层执行框架、底层原则、 全行业通用经营分析方法论
大数据·人工智能·矩阵·数据分析·用户运营
javaDocker3 天前
从「五个窗口」到「一条流水线」:金融核心交易测试的 AI 协作矩阵设计
人工智能·金融·矩阵·研发效能·ai自测
坐看风云变幻3 天前
《飞控数学与控制 · 新手入门连载》第 1 期|线性代数入门:向量、矩阵与旋转矩阵 SO(3)
线性代数·矩阵·飞控·旋转矩阵