vector<int> spiralOrder(const vector<vector<int> > &A)
{
vector<int> result;
long min_x=0,min_y=0,done=0,count=0,i=0,j=0;
long n,max_x=A[0].size()-1, m,max_y=A.size()-1;
long size=(max_x+1)*(max_y+1);
while(count<size)
{
if(i==min_y && j==min_x)
{ if(done==1)
{ min_x++;min_y++;max_x--;max_y--;i=min_y;j=min_x; }
else done=1;
}
result.push_back(A[i][j]);
count++;
if(i==min_y && j<max_x) j++;
else if(i==min_y && j==max_x) i++;
else if(i<max_y && j==max_x) i++;
else if(i==max_y && j==max_x) j--;
else if(i==max_y && j>min_x) j--;
else if(i==max_y && j==min_x) i--;
else if(i>min_y && j==min_x) i--;
}
return result;
}
Monday, November 14, 2016
C++ Program to print a 2-d matrix/vector in spiral order
Labels:
c++,
Data Structures,
Implementation,
Logic
Subscribe to:
Comments (Atom)