给定一个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;
}
};