给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> res;
if(matrix.empty()){
return res;
}
int row = matrix.size();
int colum = matrix[0].size();
int up = 0, down = row - 1;
int left = 0, right = colum - 1;
// 注意while、for 循环条件要时刻保持
while(right >= left && down >= up){
for(int i = left; i <= right && up <= down; i++){
res.push_back(matrix[up][i]);
}
up++;
for(int i = up; i <= down && left <= right; i++){
res.push_back(matrix[i][right]);
}
right--;
for(int i = right; i >= left && up <= down; i--){
res.push_back(matrix[down][i]);
}
down--;
for(int i = down; i >= up && left <= right; i--){
res.push_back(matrix[i][left]);
}
left++;
}
return res;
}
};

这篇博客详细介绍了如何使用C++实现一个按螺旋顺序遍历矩阵的算法,通过Solution类展示了如何处理空矩阵和边界情况,同时提供了优化过的代码实现和相关解释。
3182

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



