当前位置:网站首页>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;
}
};
边栏推荐
- Observable time series data downsampling practice in Prometheus
- 猿人学第一题
- Label exchange experiment
- English topic assignment (26)
- The principle of attention mechanism and its application in seq2seq (bahadanau attention)
- Setting up redis cluster cluster under Windows
- 包 类 包的作用域
- 直播預告 | 容器服務 ACK 彈性預測最佳實踐
- 数论函数及其求和 待更新
- Download the details and sequence of the original data access from the ENA database in EBI
猜你喜欢

【acwing】837. Number of connected block points

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

介绍汉明距离及计算示例

Decryption function calculates "task state and lifecycle management" of asynchronous task capability

次小生成树

Introduce Hamming distance and calculation examples

Looking at Chinese science and technology from the Winter Olympics: what is the mystery of the high-speed camera that the whole people thank?

2021 Higher Education Club Cup mathematical modeling national tournament ABCD problem - problem solving ideas

【acwing】240. food chain

Label exchange experiment
随机推荐
The first topic of ape Anthropology
揭秘技术 Leader 必备的七大清奇脑回路
Error statuslogger log4j2 could not find a logging implementation
[groovy] closure closure (customize closure parameters | customize a single closure parameter | customize multiple closure parameters | specify the default value of closure parameters)
Neural networks and deep learning Chapter 3: linear model reading questions
AutoCAD - feature matching
Neural networks and deep learning Chapter 4: feedforward neural networks reading questions
Live broadcast preview | container service ack elasticity prediction best practice
Advanced length of redis -- deletion strategy, master-slave replication, sentinel mode
History of web page requests
2021 electrician Cup - high speed rail traction power supply system operation data analysis and equivalent modeling ideas + code
Function template
数论函数及其求和 待更新
Data security -- 14 -- Analysis of privacy protection governance
Wan broadband access technology V EPON Technology
[groovy] closure (Introduction to closure class closure | closure parametertypes and maximumnumberofparameters member usage)
The 22nd Spring Festival Gala, an immersive stage for the yuan universe to shine into reality
Detailed introduction of OSPF header message
[groovy] closure (closure parameter list rule | default parameter list | do not receive parameters | receive custom parameters)
AutoCAD - Document Management

