class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
if(matrix.empty())
return ans;
int u = 0; //赋值上下左右边界
int d = matrix.size() - 1;
int l = 0;
int r = matrix[0].size() - 1;
while(true)
{
for(int i = l; i <= r; ++i) //从左边界移动到右边界
ans.push_back(matrix[u][i]);
if(++ u > d) //重新设定上边界,若上边界大于下边界,则遍历完成
break;
for(int i = u; i <= d; ++i) //从上边界移动到下边界
ans.push_back(matrix[i][r]);
if(-- r < l) //重新设定右边界,若右边界大于左边界,则遍历完成
break;
for(int i = r; i >= l; --i) //从右边界移动到左边界
ans.push_back(matrix[d][i]);
if(-- d < u) //重新设定下边界,若下边界大于上边界,则遍历完成
break;
for(int i = d; i >= u; --i)
ans.push_back(matrix[i][l]); //从下边界移动到上边界
if(++ l > r) //重新设定左边界,若左边界大于右边界,则遍历完成
break;
}
return ans;
}
};
54. 螺旋矩阵
最新推荐文章于 2023-10-20 11:40:33 发布