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]
.
#include <vector> class Solution { public: vector<int> spiralOrder(vector<vector<int>> &matrix) { vector<int> 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; } };
LeetCode之Spiral Matrix,布布扣,bubuko.com
原文:http://blog.csdn.net/smileteo/article/details/21708695