mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Update
This commit is contained in:
@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
## 思路
|
## 思路
|
||||||
|
|
||||||
|
为了利于录友们理解,我特意录制了视频,[拿下螺旋矩阵,《代码随想录》第五题!](https://www.bilibili.com/video/BV1SL4y1N7mV),结合本篇文章一起看,效果更佳。
|
||||||
|
|
||||||
这道题目可以说在面试中出现频率较高的题目,**本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。**
|
这道题目可以说在面试中出现频率较高的题目,**本题并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。**
|
||||||
|
|
||||||
要如何画出这个螺旋排列的正方形矩阵呢?
|
要如何画出这个螺旋排列的正方形矩阵呢?
|
||||||
@ -74,7 +76,7 @@ public:
|
|||||||
int loop = n / 2; // 每个圈循环几次,例如n为奇数3,那么loop = 1 只是循环一圈,矩阵中间的值需要单独处理
|
int loop = n / 2; // 每个圈循环几次,例如n为奇数3,那么loop = 1 只是循环一圈,矩阵中间的值需要单独处理
|
||||||
int mid = n / 2; // 矩阵中间的位置,例如:n为3, 中间的位置就是(1,1),n为5,中间位置为(2, 2)
|
int mid = n / 2; // 矩阵中间的位置,例如:n为3, 中间的位置就是(1,1),n为5,中间位置为(2, 2)
|
||||||
int count = 1; // 用来给矩阵中每一个空格赋值
|
int count = 1; // 用来给矩阵中每一个空格赋值
|
||||||
int offset = 1; // 每一圈循环,需要控制每一条边遍历的长度
|
int offset = 1; // 需要控制每一条边遍历的长度,每次循环右边界收缩一位
|
||||||
int i,j;
|
int i,j;
|
||||||
while (loop --) {
|
while (loop --) {
|
||||||
i = startx;
|
i = startx;
|
||||||
@ -82,11 +84,11 @@ public:
|
|||||||
|
|
||||||
// 下面开始的四个for就是模拟转了一圈
|
// 下面开始的四个for就是模拟转了一圈
|
||||||
// 模拟填充上行从左到右(左闭右开)
|
// 模拟填充上行从左到右(左闭右开)
|
||||||
for (j = starty; j < starty + n - offset; j++) {
|
for (j = starty; j < n - offset; j++) {
|
||||||
res[startx][j] = count++;
|
res[startx][j] = count++;
|
||||||
}
|
}
|
||||||
// 模拟填充右列从上到下(左闭右开)
|
// 模拟填充右列从上到下(左闭右开)
|
||||||
for (i = startx; i < startx + n - offset; i++) {
|
for (i = startx; i < n - offset; i++) {
|
||||||
res[i][j] = count++;
|
res[i][j] = count++;
|
||||||
}
|
}
|
||||||
// 模拟填充下行从右到左(左闭右开)
|
// 模拟填充下行从右到左(左闭右开)
|
||||||
@ -103,7 +105,7 @@ public:
|
|||||||
starty++;
|
starty++;
|
||||||
|
|
||||||
// offset 控制每一圈里每一条边遍历的长度
|
// offset 控制每一圈里每一条边遍历的长度
|
||||||
offset += 2;
|
offset += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果n为奇数的话,需要单独给矩阵最中间的位置赋值
|
// 如果n为奇数的话,需要单独给矩阵最中间的位置赋值
|
||||||
|
Reference in New Issue
Block a user