[LeetCode]59.螺旋矩阵II

【中等】力扣算法题解析LeetCode59:螺旋矩阵 II 要求生成一个n×n的螺旋矩阵,元素按顺时针顺序从1填充到n²。通过模拟填充过程实现:初始化四个边界(top、bottom、left、right),依次按顺时针方向填充外圈(左→右、上→下、右→左、下→上),每完成一圈后收缩边界,直到填满所有数字。时间复杂度O(n²),空间复杂度O(n²)。示例:n=3时输出[[1,2,3],[8,9,4],[7,6,5]]。 阅读详情
class Solution {
    public int[][] generateMatrix(int n) {
        int end = n * n;
        int counter = 1;
        int[][] res = new int[n][n];
        boolean[][] visited = new boolean[n][n];
        int[][] directions = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        int i = 0;
        int j = 0;
        int directionIndex = 0;
        while(counter <= end){
            res[i][j] = counter;
            visited[i][j] = true;
            counter ++;
            int nextI = i + directions[directionIndex][0];
            int nextJ = j + directions[directionIndex][1];
            if(nextI < 0 || nextI >= n || nextJ < 0 || nextJ >=n || visited[nextI][nextJ]){
                directionIndex = (directionIndex + 1) % 4;
            }
            i += directions[directionIndex][0];
            j += directions[directionIndex][1];

        }
        return res;
    }
}

本题的思路和螺旋矩阵类似,通过方向数组和边界判断实现螺旋转向。

另外,不需要使用 visited 函数确定是否访问过该点,而是直接根据 res[nextI][nextJ] > 0 来判断。

LeetCode 第59题:螺旋矩阵 II 这道题目要求我们生成一个螺旋形的矩阵,考察了我们对矩阵操作和边界处理的能力。通过这道题,我们学习了如何按顺时针方向填充矩阵,并掌握了边界控制的技巧。希望大家通过这篇博客,对矩阵操作问题有了更深入的理解,也希望大家在以后遇到类似问题时,能够灵活运用这些方法。 阅读详情

相关推荐

网课、网页视频倍速播放简单脚本

一个简单的网页视频倍速脚本

huazn612的博客 1万+

数组-螺旋矩阵II:力扣LeetCode59

给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]

buhui_c的博客 315

别再纠结Dify了!实测对比RAGFlow和Dify,聊聊企业知识库到底该怎么选

本文深度对比了RAGFlow和Dify在企业知识库选型中的实际表现,从技术架构、性能指标、部署成本等多维度进行分析。RAGFlow在复杂文档处理和准确率方面表现突出,适合有专职技术团队的企业;而Dify则以低门槛和快速部署见长。文章提供了六维度评估法,帮助企业根据文档复杂度、准确率要求等技术指标做出明智选择。

weixin_30897233的博客 670

LeetCode59- 螺旋矩阵 II

LeetCode59- 螺旋矩阵 II 给定一个正整数 n,生成一个包含 1 到 n2n^{2}n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 一、思路 (一)分而治之 和之前的一样,将这个矩阵进行分层: LeetCode48-旋转图像 LeetCode54-螺旋矩阵 ...

lyd1995的博客 218

PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?

本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。

weixin_30836759的博客 477

ArcMap|时空地理加权回归(GTWR)

ArcGIS的GTWR插件下载地址:https://www.researchgate.net/publication/329518786_GTWR_ADDIN_Valid_till_Dec_31_2022 更详细的操作参考: https://www.bilibili.com/video/BV1fR4y1M7xB?spm_id_from=333.999.0.0 https://blog.csdn.net/weixin_40008135/article/details/112693520 双击“GTWR_Be

个人学习笔记 1万+

LeetCode 59. 螺旋矩阵 II

LeetCode 59. 螺旋矩阵 II 一行一行的模拟或者写好方向然后搜索 #include&amp;lt;vector&amp;gt; #include&amp;lt;iostream&amp;gt; #define rep(i,a,b) for(int i=(a); i&amp;lt;(int)(b);++i) #define _rep(i,a,b) for(int i=(a);i&amp;lt;=(int)(b);++i) using ...

缇欧的咪西 172

uniapp [全端兼容] - 详细实现集成接入萤石云摄像头监控示例代码,页面单个或多个九宫格监控画面同时监控播放推流(视频控制方向上下左右移动/调节音量声音/全屏/截屏录制/回放/对讲/切换清晰度)

uni-app,h5移动端网页,小程序,安卓,苹果ios,app,nvue,EZVIZ萤石,uniapp萤石云摄像头监控,uniApp项目集成萤石云详细示例代码,Uniapp中使用萤石云播放视频,使用萤石云播放视频,萤石云实现多窗口监控,展示多个监控画面同时播放,ezuikit.js,云台控制左右移动,莹石摄像头直播视频,萤石视频回放,摄像头黑屏不显示,加载慢报错出错,多个摄像头宫格布局,niapp萤石云视频监控对接,实现海康萤石直播预览、回放、云台控制功能,如何利用萤石实现直播推流回流,实时监控播放,监控

🏆 前端领域优质创作者 1万+

LeetCode 力扣 59. 螺旋矩阵 II

题目描述(中等难度) 和 54题 差不多,54 题按照螺旋状遍历,这个是按照螺旋状生成二维数组。 解法一 直接按照 54题,贪吃蛇的走法来写,如果没做过可以看一下。 /* * direction 0 代表向右, 1 代表向下, 2 代表向左, 3 代表向上 */ public int[][] generateMatrix(int n) { int[][] ans = ...

wind_liang的博客 640

【Windows Server 2019】活动目录 (Active Directory) ——理论

博文介绍了活动目录 (Active Directory) 的定义,作用以及与 DNS 的关系。同时也介绍了AD的组织结构,包括域控制器,子域,对象,属性,容器,组织单位,域间信任等术语的解释,实验拓扑图。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 7747

【AI for Medecine】吴恩达医学图像AI专项课程(诊断、预测、治疗)

近期需要简单了解AI4Science上的一些应用,看到吴恩达大佬的专项课程,于是开始来个“全面”的了解--医学人工智能(诊断、预测、治疗)。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 773

力扣第59题:螺旋矩阵II

就是在说:"我给你的二维数组,第i行有n个有效数据,请不要越界访问!:创建"目录"(记录每行从哪里开始):创建实际的"数据行"(每行的数据存储空间)就像一本书:先创建目录(哪些内容在哪一页)再写每一页的具体内容这样你才能通过num[i][j]正确访问到第i行第j列的数据。角色第一个循环第二个循环建筑工地制作施工图纸实际盖楼图书馆制作图书目录采购和摆放图书快递制作快递单(写物品信息)打包实际的物品电影制作电影海报(宣传信息)拍摄实际的电影第一个循环是"说",第二个循环是"做"

2501_94418674的博客 1074

谱方法学习笔记-下(超详细)

《谱方法学习笔记》深入介绍了傅立叶谱方法在解决偏微分方程问题中的理论和实践,提供了清晰的步骤、Matlab代码以及对一维、二维波动方程等不同问题的解析,适合对谱方法感兴趣的学习者。

图灵的猫的博客 2853

力扣59. 螺旋矩阵 II

这道题依然要坚持循环不变量原则(二分法也是这样的!

qq_45858191的博客 723

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode第59题_螺旋矩阵II

给你一个正整数 n ,生成一个包含 1 到 n² 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。

qq_40263592的博客 949

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Leetcode59. 螺旋矩阵 II

Leetcode59. 螺旋矩阵 II 题目: 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 相似题目:Leetcode54. 螺旋矩阵 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 题解: java代码: /** * @param n * @ret...

会流泪de鱼的博客 203

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

59. 螺旋矩阵 II - 力扣(LeetCode)

题目描述 给定一个正整数 n,生成一个包含 1 到 n2n^2n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 题解 直接模拟,从(-1, 0)出发,按着螺旋方向依次填值1-n2n^2n2,遇到边界或者访问过的,则改变方向,方向为(右、下、左、上)。 时间复杂度为o(n2)o(n^...

Onwaier的博客 507

【LeetCode】59. 螺旋矩阵 II

本文介绍了生成螺旋矩阵的算法,重点分析边界收缩法作为最优解法。题目要求生成n×n矩阵并按顺时针螺旋顺序填充1到n²的数字。边界收缩法通过维护四个边界(top,bottom,left,right)逐层填充,时间复杂度O(n²),空间复杂度O(1)。文中比较了四种解法,提供Go语言实现代码,并讨论了边界处理、测试用例设计等实战技巧。适用于矩阵生成、图像处理等场景,核心是掌握边界管理和螺旋填充顺序。

qq_32019341的博客 1524

leetcode59------螺旋矩阵II

每次在对某一圈上的元素进行填写时,都会涉及到四条不同的边,那么我们肯定是希望在填充这四条边的时候能尽量对称的填写,即每条边填写元素相等,例如:对于3×3矩阵,我们在填写最外圈时希望每条边填写2个元素,因为这样保证了每条边都会填写两个元素,确保对称填写。根据螺旋矩阵的特点,即从外圈到最中间的数据呈现从1到n*n分布,方向为顺时针,我们可以先填充最外圈的元素,然后再填充次外圈的元素,依此类推,直到最后一圈(n为偶数)或最后一个元素(n为奇数)填充完毕。到 n^2 所有元素,且元素按顺时针顺序螺旋排列的。

xinxin的博客 1096

力扣59 螺旋矩阵II

由外向内一圈一圈这么画下去。

2202_75601845的博客 282

Leetcode 59. 螺旋矩阵 II

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 题解 题解转载自Krahets 思路: 生成一个 n×n 空矩阵 mat,随后模拟整个向内环绕的填入过程: 定义当前左右上下边界 l,r,t,b,初始值 num = 1,迭代终止值 tar = n * n; 当 num <= tar 时,始终按照 从左到右 从上到下 从右到左 从下到上 填入顺序循环,每次填入后: 执行 num += 1:得到下一个需要填入的数字; 更新

Helene1996的博客 163

Leetcode 59.螺旋矩阵II

*给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]

tyb333333的博客 718

leetcode59-螺旋矩阵II

假如不做螺旋矩阵,直接做螺旋矩阵II的话,是比较难想到循环遍历这个方法的。leetcode通过引导1和2,使得2这个题还是比较好解决的。的一个变体,这个思路还可以按照螺旋数组进行遍历,只不过在遍历的时候不用把数组加入列表中了,而是应该填入数据,之后我们返回添加后的二维数组就可以了。输出:[[1,2,3],[8,9,4],[7,6,5]]所有元素,且元素按顺时针顺序螺旋排列的。

m0_50550801的博客 422

leetcode 59.螺旋矩阵 II

有代码,c++版

2503_93888304的博客 941
上一篇: [LeetCode]57.合并区间
下一篇: [LeetCode]61.旋转链表
DamonChenLM
博客等级 码龄9年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值