当前位置:网站首页>54. 螺旋矩阵 & 59. 螺旋矩阵 II ●●
54. 螺旋矩阵 & 59. 螺旋矩阵 II ●●
2022-07-05 04:47:00 【chenyfan_】
54. 螺旋矩阵 ●●
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
- 模拟
四条边按顺序遍历,移动、判断边界。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int m = matrix.size(); // m 行
int n = matrix[0].size(); // n 列
int top = 0, right = n-1, left = 0, buttom = m-1; //边界索引值
int numsize = m*n;
int num = 0;
vector<int> ans(numsize);
while(true){
for(int i = left; i <= right; i++){
ans[num++] = matrix[top][i];
}
top++;
if(top>buttom) break; // 遍历 判断边界
for(int i = top; i <= buttom; i++){
ans[num++] = matrix[i][right];
}
right--;
if(left>right) break;
for(int i = right; i >= left; i--){
ans[num++] = matrix[buttom][i];
}
buttom--;
if(top>buttom) break;
for(int i = buttom; i >= top; i--){
ans[num++] = matrix[i][left];
}
left++;
if(left>right) break;
}
return ans;
}
};
59. 螺旋矩阵 II ●●
给你一个正整数 n ,生成一个包含 1 到 n 2 n^2 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix .
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
- 生成一个 n×n 空矩阵 ans,随后模拟整个向内环绕的填入过程:
- 定义当前左右上下边界 l,r,t,b,初始值 num = 1,迭代终止值 numsize = n * n;
- 当 num <= numsize 时,始终按照 从左到右 从上到下 从右到左 从下到上 填入顺序循环,每次填入后:
- 执行 num += 1:得到下一个需要填入的数字;
- 更新边界:例如从左到右填完后,上边界 t += 1,相当于上边界向内缩 1。
- 使用 num <= numsize 而不是 l < r || t < b 作为迭代条件,是为了解决当 n 为奇数时,矩阵中心数字无法在迭代过程中被填充的问题。
- 最终返回 ans 即可。

class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> ans(n, vector<int>(n, 0));
int up = 0, down = n-1, left = 0, right = n-1;
int cnt = 1, num = n*n;
while(cnt <= num){
// 迭代条件,填充数 <= 格子数
for(int i = left; i <= right; ++i) ans[up][i] = cnt++; // 右移
++up;
for(int i = up; i <= down; ++i) ans[i][right] = cnt++; // 下移
--right;
for(int i = right; i >= left; --i) ans[down][i] = cnt++; // 左移
--down;
for(int i = down; i >= up; --i) ans[i][left] = cnt++; // 上移
++left;
}
return ans;
}
};
边栏推荐
- [groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
- CSDN body auto generate directory
- Rip notes [rip message security authentication, increase of rip interface measurement]
- The difference between bundle, chunk and module
- 2022-2028 global and Chinese video coding and transcoding Market Research Report
- PHP reads the INI file and writes the modified content
- Matplotlib draws three-dimensional scatter and surface graphs
- Detailed introduction of OSPF header message
- 2022 U.S. college students' mathematical modeling e problem ideas / 2022 U.S. game e problem analysis
- Introduction to JVM principle and process
猜你喜欢
![Rip notes [rip message security authentication, increase of rip interface measurement]](/img/89/f70af97676496d7b9aa867be89f11d.jpg)
Rip notes [rip message security authentication, increase of rip interface measurement]

AutoCAD - isometric annotation

Setting up redis cluster cluster under Windows

2021 higher education social cup mathematical modeling national tournament ABCD questions - problem solving ideas - Mathematical Modeling
![[AI bulletin 20220211] the hard core up owner has built a lidar and detailed AI accelerator](/img/cc/06580ce7b553182968d273841a78b4.jpg)
[AI bulletin 20220211] the hard core up owner has built a lidar and detailed AI accelerator

Advanced length of redis -- deletion strategy, master-slave replication, sentinel mode

How can CIOs use business analysis to build business value?
![[groovy] closure (closure call | closure default parameter it | code example)](/img/61/754cee9a940fd4ecd446b38c2f413d.jpg)
[groovy] closure (closure call | closure default parameter it | code example)

Construction d'un Cluster redis sous Windows

Emlog blog theme template source code simple good-looking responsive
随机推荐
TPG x AIDU | AI leading talent recruitment plan in progress!
PHP reads the INI file and writes the modified content
Web开发人员应该养成的10个编程习惯
[groovy] closure (closure parameter list rule | default parameter list | do not receive parameters | receive custom parameters)
[groovy] closure (closure call | closure default parameter it | code example)
Neural network and deep learning Chapter 1: introduction reading questions
[groovy] closure (Introduction to closure class closure | closure parametertypes and maximumnumberofparameters member usage)
Neural networks and deep learning Chapter 6: Circular neural networks reading questions
Introduce Hamming distance and calculation examples
The difference between bundle, chunk and module
[groovy] closure (closure parameter binding | curry function | rcurry function | ncurry function | code example)
JVM 原理和流程简介
The 22nd Spring Festival Gala, an immersive stage for the yuan universe to shine into reality
Introduction to RT thread kernel (5) -- memory management
#775 Div.1 C. Tyler and Strings 组合数学
Managed service network: application architecture evolution in the cloud native Era
2021 electrician Cup - high speed rail traction power supply system operation data analysis and equivalent modeling ideas + code
Key review route of probability theory and mathematical statistics examination
MD5绕过
2021 higher education social cup mathematical modeling national tournament ABCD questions - problem solving ideas - Mathematical Modeling

