给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[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]
提示:
m == matrix.length n == matrix[i].length 1 <= m, n <= 10 -100 <= matrix[i][j] <= 100
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int>res;
int n = matrix.size(),m = matrix[0].size();
int w = min(n,m);
for(int i = 0;i < (w + 1) / 2;i ++){
for(int j = i;j < m - i;j ++)res.push_back(matrix[i][j]);
for(int j = i + 1;j < n - i;j ++)res.push_back(matrix[j][m - i - 1]);
for(int j = m - 2 - i;j >= i;j --){
if(n - i - 1 == i)break;
res.push_back(matrix[n - i - 1][j]);
}
for(int j = n - 2 - i;j >= i + 1;j --){
if(m - i - 1 == i)break;
res.push_back(matrix[j][i]);
}
}
return res;
}
};
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168716.html原文链接:https://javaforall.cn