

代码区:
cpp
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
int hang=matrix.size();
int lie=matrix[0].size();
int start_hang=0,start_lie=0,end_hang=hang-1,end_lie=lie-1;
int step=hang*lie;
while(step>=1){
if(start_hang > end_hang || start_lie > end_lie) break;
for(int i=start_lie;i<=end_lie;i++){//行不变,列增加
ans.push_back(matrix[start_hang][i]);
step--;
}
start_hang++;
if(start_hang > end_hang || start_lie > end_lie) break;
for(int i=start_hang;i<=end_hang;i++){//列不变,行增加
ans.push_back(matrix[i][end_lie]);
step--;
}
end_lie--;
if(start_hang > end_hang || start_lie > end_lie) break;
for(int i=end_lie;i>=start_lie;i--){//行不变,列减小
ans.push_back(matrix[end_hang][i]);
step--;
}
end_hang--;
if(start_hang > end_hang || start_lie > end_lie) break;
for(int i=end_hang;i>=start_hang;i--){//列不变,行增加
ans.push_back(matrix[i][start_lie]);
step--;
}
start_lie++;
}
return ans;
}
};
欢迎各位读者提出意见。
(菜菜奋斗小日记)