class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector <int> x; if(matrix.empty()) return x; int top=0; int rh=matrix[0].size()-1; int rl=0; int bot=matrix.size()-1; while(1) { for(int i=rl;i<=rh;i++) x.push_back(matrix[top][i]); if(++top>bot) break; for(int j=top;j<=bot;j++) x.push_back(matrix[j][rh]); if(--rh<rl) break; for(int k=rh;k>=rl;k--) x.push_back(matrix[bot][k]); if(--bot<top) break; for(int s=bot;s>=top;s--) x.push_back(matrix[s][rl]); if(++rl>rh) break; } return x; } };