【second】Spiral Matrix
注意条件。
vector<int> spiralOrder(vector<vector<int> > &matrix) {
// Note: The Solution object is instantiated only once and is reused by each test case.
vector<int> res;
if(matrix.empty()||matrix[0].empty())
return res;
int m = matrix.size();
int n = matrix[0].size();
int startx = 0,starty = 0;
while(2*startx<m&&2*starty<n)
{
generate(startx,starty,m-1-startx,n-1-starty,res,matrix);
++startx;
++starty;
}
return res;
}
void generate(int startx,int starty,int endx,int endy,vector<int>& res,vector<vector<int> >& matrix)
{
int i;
for(i=starty;i<=endy;i++)
res.push_back(matrix[startx][i]);
for(i=startx+1;i<=endx;i++)
res.push_back(matrix[i][endy]);
if(startx<endx)
{
for(i=endy-1;i>=starty;i--)
res.push_back(matrix[endx][i]);
}
if(starty<endy)
{
for(i=endx-1;i>=startx+1;i--)
res.push_back(matrix[i][starty]);
}
}
浙公网安备 33010602011771号