给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix)
{
vector <int> ans;
if (matrix.empty())
{
return ans; //若为空,直接返回
}
int up = 0; //上下左右边界
int down = matrix.size() - 1;
int left = 0;
int right = matrix[0].size() - 1;
while (true)
{
for (int i = left; i <= right; ++i)
{
//向右
ans.push_back(matrix[up][i]);
}
if (++up > down)///重新设定上边界,若上边界大于下边界,则遍历遍历完成,下同
{
break;
}
for (int i = up; i <= down; ++i)
{
//向下
ans.push_back(matrix[i][right]);
}
if (--right < left) //重新设定有边界
{
break;
}
for (int i = right; i >= left; --i)
{
//向左
ans.push_back(matrix[down][i]);
}
if (--down < up)//重新设定下边界
{
break;
}
for (int i = down; i >= up; --i)
{
//向上
ans.push_back(matrix[i][left]);
}
if (++left > right)//重新设定左边界
{
break;
}
}
return ans;
}
};
直接循环添加数组,目前可以考虑添加行数组是否可以直接添加,不用循环