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]
.
#includeclass Solution { public: vector spiralOrder(vector > &matrix) { vector result; if (matrix.size() == 0) return result; int rowB = 0, rowE = matrix.size()-1; int columnB = 0, columnE = matrix[0].size()-1; while(true){ //left->right for (int i = columnB; i <= columnE; i++) result.push_back(matrix[rowB][i]); if (++rowB > rowE) break; //top->bottom for (int i = rowB; i <= rowE; i++) result.push_back(matrix[i][columnE]); if (--columnE < columnB) break; //right->left for (int i = columnE; i >= columnB; i--) result.push_back(matrix[rowE][i]); if (--rowE < rowB) break; //bottom->top for (int i = rowE; i >= rowB; i--) result.push_back(matrix[i][columnB]); if (++columnB > columnE) break; }//while return result; } };