题意:按顺时针方向,螺旋输出一个矩阵。
思路:简单模拟,注意边界处理。这里运用标记INT_MAX来标记边界。
class Solution {
public:
vector<int> re;
vector<vector<int> > mymatrix;
vector<int> spiralOrder(vector<vector<int>>& matrix) {
mymatrix = matrix;
if(matrix.size() == 0) return re;
int n = matrix.size();
int m = matrix[0].size();
int c = n * m;
int i = 0;
int j = 0;
int f = INT_MAX;
while(c) {
while(j < m && mymatrix[i][j] != f) {
c --;
re.push_back(mymatrix[i][j]);
mymatrix[i][j] = f;
j ++;
}
j --;
i ++;
while(i < n && mymatrix[i][j] != f) {
c --;
re.push_back(mymatrix[i][j]);
mymatrix[i][j] = f;
i ++;
}
i --;
j --;
while(j >=0 && mymatrix[i][j] != f) {
c --;
re.push_back(mymatrix[i][j]);
mymatrix[i][j] = f;
j --;
}
j ++;
i --;
while(i >= 0 && mymatrix[i][j] != f) {
c --;
re.push_back(mymatrix[i][j]);
mymatrix[i][j] = f;
i --;
}
i ++;
j ++;
}
return re;
}
};

本文介绍了一种按顺时针螺旋顺序输出矩阵元素的方法。通过使用标记INT_MAX来避免重复访问已输出的元素,确保了输出顺序的正确性。该算法适用于任意大小的矩阵,并通过简单的边界判断实现了对矩阵的有效遍历。
1161

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



