题目:
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;
}
};
本文介绍了一种简洁高效的算法,用于将二维矩阵中的元素按照螺旋顺序遍历并收集到结果数组中。通过定义边界变量并依次遍历矩阵的外圈,最终得到螺旋顺序的元素序列。
195

被折叠的 条评论
为什么被折叠?



