计划
遇到的难题
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int m=matrix.size();
int n=matrix[0].size();
// cout<<m<<" "<<n<<endl;
bool flag[m][n];//标记是否走过
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
flag[i][j]=false;
}
}
int status=0;//四种状态对应四个方向走
vector<int> num;
int t1=0,t2=0;
for(int i=0;i<=m*n;i++){
if(status==0){
if(t2<n&&flag[t1][t2]==false){
num.push_back(matrix[t1][t2]);
flag[t1][t2]=true;
t2++;
}
else{
status=1;
t2--;
t1++;
}
}
if(status==1){
if(t1<m&&flag[t1][t2]==false){
num.push_back(matrix[t1][t2]);
flag[t1][t2]=true;
t1++;
}
else{
status=2;
t1--;
t2--;
}
}
if(status==2){
if(t2>=0&&flag[t1][t2]==false){
num.push_back(matrix[t1][t2]);
flag[t1][t2]=true;
t2--;
}
else{
status=3;
t2++;
t1--;
}
}
if(status==3){
if(t1>=0&&flag[t1][t2]==false){
num.push_back(matrix[t1][t2]);
flag[t1][t2]=true;
t1--;
}
else{
status=0;
t1++;
t2++;
}
}
}
return num;
}
};