顺时针打印矩阵

2020-07-29  本文已影响0人  Crazy_Bear
class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        if(matrix.empty()) return {};
        vector<int> vec;
        int start=0;
        int rows=matrix.size();
        int cols=matrix[0].size();
        while(2*start<rows && 2*start<cols)
        {
            printN(matrix,rows,cols,start,vec);
            start++;
        }
        return vec;
            
    }
    void printN(vector<vector<int> > matrix,int rows,int cols,int start,vector<int> &vec)
    {
        int endx=cols-1-start;
        int endy=rows-1-start;
        for(int i=start;i<=endx;i++)
          vec.push_back(matrix[start][i]);
        if(start<endy)
        {
            for(int i=start+1;i<=endy;i++)
               vec.push_back(matrix[i][endx]);
        }
        if(start<endx&&start<endy)
        {
            for(int i=endx-1;i>=start;i--)
                vec.push_back(matrix[endy][i]);
             for(int i=endy-1;i>start;i--)
                vec.push_back(matrix[i][start]);
        }
        
    }
};
上一篇 下一篇

猜你喜欢

热点阅读