54. 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
题解
双百,while 模拟法 每次大循环 while直左,while直下,while直右,while直上
class Solution {}
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
int n=matrix.size();
if(!n) return ans;
int m=matrix[0].size();
int i=0,j=-1;
while(ans.size()<(n*m)){
while(j+1<m&&matrix[i][j+1]<102) {ans.push_back(matrix[i][++j]);matrix[i][j]=102;} //0行, 0列 左走
while(i+1<n&&matrix[i+1][j]<102) {ans.push_back(matrix[++i][j]);matrix[i][j]=102;} //0行, m-1列 下走
while(j-1>=0&&matrix[i][j-1]<102){ans.push_back(matrix[i][--j]);matrix[i][j]=102;} //n-1行,m-1列 右回
while(i-1>=0&&matrix[i-1][j]<102){ans.push_back(matrix[--i][j]);matrix[i][j]=102;} //n-1,0列, 上回
}
return ans;
}
};