题解 | #顺时针打印矩阵#

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        vector<int> Output;
        if(matrix.empty()||matrix[0].empty())
            return Output;

        pair<int,int>size_=pair<int,int>(matrix[0].size(),matrix.size());
        pair<int,int> curindex=pair<int,int>(0,0);
        PrintCoreUp(Output,matrix, size_, curindex);
        return Output;

    }
    void PrintCoreUp(vector<int> &Output,vector<vector<int> > &matrix,
                    pair<int,int> &size_,pair<int,int> &curindex)
    {
        if(size_.first==0||size_.second==0)
            return;
        int j=curindex.second;
        int i=curindex.first;

          for(int coj=0;coj!=size_.second;)
        {
            if(j==curindex.second)
            {
                for(int coi=0;coi!=size_.first;)
                {
                    Output.push_back(matrix[j][i]);
                    ++coi;
                    ++i;
                }

            }
            else
            {
                Output.push_back(matrix[j][i-1]);
            }
            ++j;
            ++coj;
        }

        curindex.first=i-2;
        curindex.second=j-1;
        --size_.first;
        --size_.second;
        return PrintCoreDown(Output, matrix,size_, curindex); 


    }
    void PrintCoreDown(vector<int> &Output,vector<vector<int> > &matrix,
                    pair<int,int> &size_,pair<int,int> &curindex)
    {
        if(size_.first==0||size_.second==0)
            return;
        int j=curindex.second;
        int i=curindex.first;
        for(int coj=0;coj!=size_.second;)
        {
            if(j==curindex.second)
            {
                for(int coi=0;coi!=size_.first;)
                {
                    Output.push_back(matrix[j][i]);
                    ++coi;
                    --i;
                }

            }
            else
            {
                Output.push_back(matrix[j][i+1]);
            }
            --j;
            ++coj;
        }

        curindex.first=i+2;
        curindex.second=j+1;
        --size_.first;
        --size_.second;
        return PrintCoreUp(Output, matrix,size_, curindex); 
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务