注意只有一行或者只有一列的情况,或者只有一个数字的情况。
因此,这个题错误出现可能最少的情况就是上下包含第一个和最后一个,左右边的去除第一个和最后一个。同时在下和左这两部分加一个限定条件,避免和上右这两部分重复了。
class Solution {
public:
int a[1000][1000];
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int >v;
if(matrix.size()==0) return v;
int a[100][100];
int index=1;
int n=matrix.size();
int m=matrix[0].size();
for(int i=0;i<min((n+1)/2,(m+1)/2);i++)
{
for(int j=i;j<=m-1-i;j++)
{
v.push_back(matrix[i][j]);
}
for(int j=i+1;j<n-1-i;j++)
{
v.push_back(matrix[j][m-1-i]);
}
for(int j=m-1-i;j>=i&&n-1-i>i;j--)
{
v.push_back(matrix[n-1-i][j]);
}
for(int j=n-2-i;j>i&&i<m-1-i;j--)
{
v.push_back(matrix[j][i]);
}
}
return v;
}
};