描述
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> result;
if (matrix.size() <= 0)//先判断数组是否为空
{
return result;
}
int top = 0;
int bottom = matrix.size() - 1;//二维数组大小matrix.size()表示行数
int left = 0;
int right = matrix[0].size() - 1;//二维数组大小matrix[0].size()表示列数
while (top <= bottom&&left <= right)
{
上面 左到右
for (int i = left; i <= right; i++)
{
result.emplace_back(matrix[top][i]);
}
++top;//循环结束以后再++
//右边 上到下
for (int i = top; i <= bottom; i++)
{
result.emplace_back(matrix[i][right]);
}
--right;//循环结束以后再++
//下面 右到左
for (int i = right; top <= bottom&&i >= left; i--)//判断top <= bottom
{
result.emplace_back(matrix[bottom][i]);
}
--bottom;//循环结束以后再++
//左边 下到上
for (int i = bottom; left <= right&&i >= top; i--)//判断left <= right
{
result.emplace_back(matrix[i][left]);
}
++left;//循环结束以后再++
}
return result;
}
};