题目
给你一个 m m m 行 n n n 列的矩阵 m a t r i x matrix matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
思路
简单粗暴,直接看代码
代码
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int row_max = matrix.size();
int col_max = matrix[0].size();
int row_min = 0, col_min = 0;
int i = 0, j = 0;
vector<vector<int>> updata = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int flag = 0;
vector<int> ret;
int num = 0;
while(num < matrix.size()*matrix[0].size()){
num++;
ret.push_back(matrix[i][j]);
if(flag == 0 && j == col_max-1){
flag = (flag+1)%4;
row_min += 1;
}
else if(flag == 1 && i == row_max-1){
flag = (flag+1)%4;
col_max -= 1;
}
else if(flag == 2 && j == col_min){
flag = (flag+1)%4;
row_max-=1;
}
else if(flag == 3 && i == row_min){
flag = (flag+1)%4;
col_min+=1;
}
i += updata[flag][0];
j += updata[flag][1];
}
return ret;
}
};