题解 | #螺旋矩阵#
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
#include <vector>
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> res;
int n=matrix.size();
if (n==0) {
return res;
}
int left=0;
int right=matrix[0].size()-1;
int up=0;
int down=n-1;
while (left<=right&&up<=down) {
//上边界从左向右
for(int i=left;i<=right;i++){
res.push_back(matrix[up][i]);
}
up++;
if(up>down)
break;
//右边界从上向下
for(int i=up;i<=down;i++){
res.push_back(matrix[i][right]);
}
right--;
if(left>right)
break;
//下边界从右向左
for(int i=right;i>=left;i--)
res.push_back(matrix[down][i]);
down--;
if(up>down)
break;
//左边界从下向上
for (int i=down;i>=up;i--)
res.push_back(matrix[i][left]);
left++;
if(left>right)
break;
}
return res;
}
};
查看3道真题和解析