class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.empty() || matrix[0].empty()) return{};
vector<int> res;
int m = matrix.size(),n = matrix[0].size();
//蛇形走位
int dx[] = {0,1,0,-1},dy[] = {1,0,-1,0};
int a = 0,b = 0;
for(int x = 0,y = 0,d = 0,k = 0;k < n * m;k++){
res.push_back(matrix[a][b]);
matrix[a][b] = 0;
a = x + dx[d],b = y + dy[d];
//判断越界和是否重复走过
if(a < 0 || a >= m|| b < 0 || b >= n || matrix[a][b] == 0){
d = (d + 1) % 4;
a = x + dx[d],b = y + dy[d];
}
x = a,y = b;
}
return res;
}
};
leetcode54. 螺旋矩阵
于 2023-02-08 15:58:39 首次发布
该代码实现了一个C++函数,名为spiralOrder,用于对给定的矩阵进行螺旋顺序遍历。它使用了四个方向向量dx和dy,按顺序移动并检查边界,确保不重复访问已经遍历过的元素。最终返回遍历的结果序列。
929

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



