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;
    }
};