https://leetcode.com/problems/spiral-matrix/
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.empty()) return {};
int m=matrix.size(), n=matrix[0].size();
int sum=m*n,x=0,y=0;
int tot=0;
int vis[m][n];
memset(vis, 0, sizeof(vis));
vector<int>res;
res.push_back(matrix[0][0]);
vis[0][0]=1, tot=1;
while (tot<sum) {
while (y+1<n&&!vis[x][y+1]) { //一定要有标记
y+=1;
res.push_back(matrix[x][y]);
vis[x][y]=1;
tot+=1;
}
while (x+1<m&&!vis[x+1][y]) {
x+=1;
res.push_back(matrix[x][y]);
vis[x][y]=1;
tot+=1;
}
while(y-1>=0&&!vis[x][y-1]){
y-=1;
res.push_back(matrix[x][y]);
vis[x][y]=1;
tot+=1;
}
while (x-1>=0&&!vis[x-1][y]) {
x-=1;
res.push_back(matrix[x][y]);
vis[x][y]=1;
tot+=1;
}
}
return res;
}
};