题目:
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]
.
这题比较简单,关键是能不能用简洁的代码把自己的思路给提现出来。
实现如下:
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> result;
int row = matrix.size();
if (row < 1) return result;
int column = matrix[0].size();
int left = 0, up = 0, right = column - 1, down = row - 1;
while (left <= right && up <= down)
{
for (int j = left; j <= right; j++)
result.push_back(matrix[up][j]);
up++;
for (int j = up; j <= down; j++)
result.push_back(matrix[j][right]);
right--;
if (up <= down)
{
for (int j = right; j >= left; j--)
result.push_back(matrix[down][j]);
}
down--;
if (left <= right)
{
for (int j = down; j >= up; j--)
result.push_back(matrix[j][left]);
}
left++;
}
return result;
}
};