059.螺旋矩阵 II
作者:沉默王二
发布时间:2022-11-12T08:45:31.172+0800
本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记),访问地址和密码:https://t.zsxq.com/6iuzn6I
059.螺旋矩阵 II
题意
给你一个正整数 n ,生成一个包含 1 到 n的2次方 的所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
难度
中等
示例
示例 1:
输入:n = 3
示例 2:
输入:n = 1
分析
这题和 054.螺旋矩阵 相差无几,都是需要 螺旋 遍历整个二维数组,只不过上一次是依次取数字,而这次,我们需要填充数字而已。
还是一样的按照顺时针遍历外层,然后逐步缩小外层,这题便能够解决了。
class Solution{
int[][] resMatrix = new int[n][n]; if(n == 0) return resMatrix; int up = 0,down = n - 1; int lef = 0,rig = n - 1; int cnt = 0; for(;;){ for(int i = lef;i <= rig;i++) resMatrix[up][i] = ++cnt; if(++up > down) break; for(int i = up;i <= down;i++) resMatrix[i][rig] = ++cnt; if(--rig < lef) break; for(int i = rig;i >= lef;i--) resMatrix[down][i] = ++cnt; if(--down < up) break; for(int i = down;i >= up;i--) resMatrix[i][lef] = ++cnt; if(++lef > rig) break; } return resMatrix; }}
总结
本题与 054.螺旋矩阵 的思路以及代码大体上没有差别,都是顺时针遍历然后缩小边界,再填充/获取相应位置的数据即可。
力扣链接:https://leetcode.cn/problems/spiral-matrix-ii/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1000 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记),访问地址和密码:https://t.zsxq.com/6iuzn6I
059.螺旋矩阵 II
题意
给你一个正整数 n ,生成一个包含 1 到 n的2次方 的所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
难度
中等
示例
示例 1:
输入:n = 3
示例 2:
输入:n = 1
分析
这题和 054.螺旋矩阵 相差无几,都是需要 螺旋 遍历整个二维数组,只不过上一次是依次取数字,而这次,我们需要填充数字而已。
还是一样的按照顺时针遍历外层,然后逐步缩小外层,这题便能够解决了。
class Solution{
int[][] resMatrix = new int[n][n]; if(n == 0) return resMatrix; int up = 0,down = n - 1; int lef = 0,rig = n - 1; int cnt = 0; for(;;){ for(int i = lef;i <= rig;i++) resMatrix[up][i] = ++cnt; if(++up > down) break; for(int i = up;i <= down;i++) resMatrix[i][rig] = ++cnt; if(--rig < lef) break; for(int i = rig;i >= lef;i--) resMatrix[down][i] = ++cnt; if(--down < up) break; for(int i = down;i >= up;i--) resMatrix[i][lef] = ++cnt; if(++lef > rig) break; } return resMatrix; }}
总结
本题与 054.螺旋矩阵 的思路以及代码大体上没有差别,都是顺时针遍历然后缩小边界,再填充/获取相应位置的数据即可。
力扣链接:https://leetcode.cn/problems/spiral-matrix-ii/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1000 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
本题解同时收录在星球专栏《二哥的 LeetCode 刷题笔记》中,专栏托管在语雀平台上(更方便你沉浸式阅读和做笔记),访问地址和密码:https://t.zsxq.com/6iuzn6I
059.螺旋矩阵 II
题意
给你一个正整数 n ,生成一个包含 1 到 n的2次方 的所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
难度
中等
示例
示例 1:
输入:n = 3
示例 2:
输入:n = 1
分析
这题和 054.螺旋矩阵 相差无几,都是需要 螺旋 遍历整个二维数组,只不过上一次是依次取数字,而这次,我们需要填充数字而已。
还是一样的按照顺时针遍历外层,然后逐步缩小外层,这题便能够解决了。
class Solution{
int[][] resMatrix = new int[n][n]; if(n == 0) return resMatrix; int up = 0,down = n - 1; int lef = 0,rig = n - 1; int cnt = 0; for(;;){ for(int i = lef;i <= rig;i++) resMatrix[up][i] = ++cnt; if(++up > down) break; for(int i = up;i <= down;i++) resMatrix[i][rig] = ++cnt; if(--rig < lef) break; for(int i = rig;i >= lef;i--) resMatrix[down][i] = ++cnt; if(--down < up) break; for(int i = down;i >= up;i--) resMatrix[i][lef] = ++cnt; if(++lef > rig) break; } return resMatrix; }}
总结
本题与 054.螺旋矩阵 的思路以及代码大体上没有差别,都是顺时针遍历然后缩小边界,再填充/获取相应位置的数据即可。
力扣链接:https://leetcode.cn/problems/spiral-matrix-ii/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 1000 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
知识星球
扫码加入星球
查看更多优质内容
https://wx.zsxq.com/mweb/views/joingroup/join_group.html?group_id=15522885221412