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
相关推荐
dingzd9515 小时前
Twitter矩阵养号风险提醒
线性代数·矩阵·web3·facebook·twitter·tiktok·instagram
%KT%2 天前
旋转矩阵的推导+矩阵在3DGS中的应用
线性代数·矩阵·3dgs
MYX_3092 天前
第二章 预备知识(线性代数)
python·线性代数·机器学习
豆沙沙包?2 天前
2025年--Lc169--H36.有效的数独(矩阵)--Java版
线性代数·矩阵
MoRanzhi12033 天前
12. Pandas 数据合并与拼接(concat 与 merge)
数据库·人工智能·python·数学建模·矩阵·数据分析·pandas
flashlight_hi3 天前
LeetCode 分类刷题:74. 搜索二维矩阵
python·算法·leetcode·矩阵
一袋米扛几楼984 天前
【机器学习】混淆矩阵(confusion matrix)TP TN FP FN
人工智能·机器学习·矩阵
一水鉴天4 天前
整体设计 逻辑系统程序 之14 彻底分析了的四类文字/三种数字/三套符号
线性代数
WWZZ20254 天前
ORB_SLAM2原理及代码解析:单应矩阵H、基础矩阵F求解
线性代数·算法·计算机视觉·机器人·slam·基础矩阵·单应矩阵
zhangfeng11334 天前
R语言 表达矩阵 count_table 筛选出 行名是 某个 基因的 数据或者某个列中的数据是某个基因的数据
矩阵·r语言·生物信息