class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
if(matrix.empty())
return res;
int m =matrix.size();
int n=matrix[0].size();
vector<vector<bool>> st(m,vector<bool>(n,false));
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int d = 1;
int x = 0,y =0;
for(int i = 0;i<n*m;i++){
res.push_back(matrix[x][y]);
st[x][y]=true;
int a = x+dx[d];
int b = y+dy[d];
if(a<0 || a>=m || b<0 || b>=n || st[a][b]){
d = (d+1)%4;
a = x+dx[d];
b = y+dy[d];
}
x = a,y = b;
}
return res;
}
};
难度简单126
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100