class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.empty())
return {};
vector<int>result;
int row = matrix.size();
int col = matrix[0].size();
int i = 0, j = 0, flag = 0;//flag作为换行或者换列的标记;
for (int num = 1; num <= row*col; num++)
{
result.push_back(matrix[i][j]);
matrix[i][j] = INT_MAX;
if (flag == 0)
{
if (j + 1 < col &&matrix[i][j + 1] != INT_MAX)
{
j++;
}
else
{
i++;
flag = 1;
}
}
else if (flag == 1)
{
if (i + 1 < row&&matrix[i + 1][j] != INT_MAX)
i++;
else
{
j--;
flag = 2;
}
}
else if (flag == 2)
{
if (j - 1 >= 0 && matrix[i][j - 1] != INT_MAX)
j--;
else
{
i--;
flag = 3;
}
}
else
{
if (i - 1 >= 0 && matrix[i - 1][j] != INT_MAX)
i--;
else
{
j++;
flag = 0;
}
}
}
return result;
}
};
54. Spiral Matrix
最新推荐文章于 2022-07-06 10:23:15 发布