public:
vector<int>ans;
//每一圈当成一个矩阵,然后遍历该矩阵即可
void fun(int lx,int ly,int rx,int ry,vector<vector<int> > matrix){
for(int i=ly;i<=ry;i++)ans.push_back(matrix[lx][i]);
for(int j=lx+1;j<=rx;j++)ans.push_back(matrix[j][ry]);
int h=rx-lx+1;//这里易错
if(h>1){//不止只有一行
for(int i=ry-1;i>=ly;i--)ans.push_back(matrix[rx][i]);
}
int w=ry-ly+1;
if(w>1){//不止只有一列
for(int j=rx-1;j>=lx+1;j--)ans.push_back(matrix[j][ly]);
}
}
vector<int> printMatrix(vector<vector<int> > matrix) {
if(matrix.empty())return ans;
//这两个点分别表示左上角,和右下角的点
int lx=0,ly=0,rx=matrix.size()-1,ry=matrix[0].size()-1;
while(lx<=rx&&ly<=ry){//满足两点的位置
fun(lx++,ly++,rx--,ry--,matrix);
}
return ans;
}
};