class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
//若空
if(matrix.size() == 0 || matrix[0].size() == 0) return {};
//行列
int rows = matrix.size(), columns = matrix[0].size();
//定义top,bottom,left,right
int left = 0, right = columns - 1, top = 0, bottom = rows - 1;
vector<int> order;
//循环
while(left <= right && top <= bottom){
for(int column = left; column < right; column++){
order.push_back(matrix[top][column]);
}
for(int row = top ; row <= bottom; row++){
order.push_back(matrix[row][right]);
}
if(left < right && top < bottom){
for(int column = right - 1; column >= left; column--){
order.push_back(matrix[bottom][column]);
}
for(int row = bottom - 1; row > top; row--){
order.push_back(matrix[row][left]);
}
}
left++;
top++;
right--;
bottom--;
}
return order;
}
};
算法-矩阵-螺旋矩阵(按层模拟)
原创
©著作权归作者所有:来自51CTO博客作者一叶孤舟渡的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
模拟法螺旋遍历矩阵:54.螺旋矩阵(Kotlin)
54. 螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时
bmp gui unix xcode macbook -
螺旋矩阵【数组】
时间复杂度:空间复杂度:
矩阵 List 空间复杂度 时间复杂度 -
1050 螺旋矩阵
题目#include<iostream>#include<algorithm>#include<cmath>using na
1050 螺旋矩阵 ci #include i++