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

顺时针打印矩阵

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

class Solution {
public:
    vector<int>v;
    vector<vector<int> > mv;
    int n,m;
    void func(int k){
        //边界条件
        if(2*k+1>min(n,m))return;
        //依次打印
        for(int i=k;i<=m-k-1;i++)v.push_back(mv[k][i]);
        for(int i=k+1;i<=n-k-1;i++)v.push_back(mv[i][m-k-1]);
        
        if(2*k+2>min(n,m))return;
        for(int i=m-k-2;i>=k;i--)v.push_back(mv[n-k-1][i]);
        for(int i=n-k-2;i>=k+1;i--)v.push_back(mv[i][k]);
        func(k+1);
    }
    vector<int> printMatrix(vector<vector<int> > matrix) {
        v.clear();
        n=matrix.size();
        if(n==0)return v;
        m=matrix[0].size();
        if(m==0)return v;
        mv=matrix;
        func(0);
        return v;
    }
};
全部评论

相关推荐

ResourceUtilization:算法很难了,现在都需要相关论文还有对应的实习,可以先试试中厂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务