class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
int min=INT_MIN;
int n=matrix.size();
vector<int> ret;
if(n==0) return ret;
int m=matrix[0].size();
int i,j;
ret.push_back(matrix[0][0]);
i=0,j=0;
matrix[0][0]=min;
int left=0,right=1,up=0,down=0;
for(int index=1;index<n*m+100;index++){
if(right){
if((j+1)<m&&matrix[i][j+1]!=min){
cout<<"right="<<index<<endl;
cout<<"@1"<<endl;
cout<<"n="<<matrix[i][j+1]<<endl;
ret.push_back(matrix[i][j+1]);
matrix[i][j+1]=min;
j++;
continue;
}
else{
//index++
left=0,right=0,up=0,down=1;
}
}
if(down){
if((i+1)<n&&matrix[i+1][j]!=min){
cout<<"down="<<index<<endl;
cout<<"@2"<<endl;
cout<<"n="<<matrix[i+1][j]<<endl;
ret.push_back(matrix[i+1][j]);
matrix[i+1][j]=min;
i++;
continue;
}
else{
//index++
left=1,right=0,up=0,down=0;
}
}
if(left){
if((j-1)>=0&&matrix[i][j-1]!=min){
cout<<"left="<<index<<endl;
cout<<"@3"<<endl;
cout<<"n="<<matrix[i][j-1]<<endl;
ret.push_back(matrix[i][j-1]);
matrix[i][j-1]=min;
j--;
continue;
}
else{
left=0,right=0,up=1,down=0;
}
}
if(up){
if((i-1)>=0&&matrix[i-1][j]!=min){
cout<<"up="<<index<<endl;
cout<<"@4"<<endl;
cout<<"n="<<matrix[i-1][j]<<endl;
ret.push_back(matrix[i-1][j]);
matrix[i-1][j]=min;
i--;
continue;
}
else{
left=0,right=1,up=0,down=0;
}
}
}
return ret;
}
};
spiral-matrix
最新推荐文章于 2019-10-13 12:25:34 发布