
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]
You should return [1,2,3,6,9,8,7,4,5].
vector<int> spiralOrder(vector<vector<int> > &matrix) { int row = matrix.size(); if(row == 0) return vector<int>(); int column = matrix[0].size(); vector<int>res; int ux=0, uy=0, dx=row-1, dy=column-1;//设置4个变量 while(ux < dx && uy < dy){//在同一行的话直接解决就好 for(int i=uy; i<dy; i++){ res.push_back(matrix[ux][i]); } for(int i=ux; i<dx; i++){ res.push_back(matrix[i][dy]); } for(int i=dy; i>uy; i--){ res.push_back(matrix[dx][i]); } for(int i=dx; i>ux; i--){ res.push_back(matrix[i][uy]); } uy++; dy--; ux++; dx--; } //要用if,else if如果n==m时,ux==dx && uy == dy同时成立 if(ux == dx){ for(int i=uy; i<=dy; i++) res.push_back(matrix[ux][i]); } else if(uy == dy){ for(int i=ux; i<=dx; i++) res.push_back(matrix[i][ux]); } return res; }




近期评论