螺旋矩阵
in Algorithm Pageviews
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例1:
输入:matric = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
输出:[1, 2, 3, 6, 9, 8, 7, 4, 5]
示例2:
输入: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]
注意:
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
class Solution {
public:
vector<int> SpiralOrder(vector<vector<int>> &matrix)
{
vector<int> res;
int m = matrix.size();
int n = matrix[0].size();
int up = 0;
int down = m - 1;
int left = 0;
int right = n - 1;
while (true) {
// 从左往右
for (int i = left; i <= right; i++) {
res.emplace_back(matrix[up][i]);
}
if (++up > down) {
break;
}
// 从上到下
for (int i = up; i <= down; i++) {
res.emplace_back(matrix[i][right]);
}
if (--right < left) {
break;
}
// 从右到左
for (int j = right; j >= left; j--) {
res.emplace_back(matrix[j][left]);
}
if (--down < up) {
break;
}
// 从下到上
for (int j = down; j >= up; j--) {
res.emplace_back(matrix[j][left]);
}
if (++left > right) {
break;
}
}
return res;
}
};