题解 | #螺旋矩阵#

螺旋矩阵

https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

#include <vector>
class Solution {
public:
    int m;
    int n;
    vector<int> ans;
    vector<vector<int> > matrix;
    void myPrint(int x1,int y1,int x2,int y2){
        for(int i=y1;i<=y2;i++) ans.push_back(matrix[x1][i]);
        for(int i=x1+1;i<=x2;i++) ans.push_back(matrix[i][y2]);
        for(int i=y2-1;i>=y1;i--) ans.push_back(matrix[x2][i]);
        for(int i=x2-1;i>x1;i--) ans.push_back(matrix[i][y1]);
    }
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        if(matrix.size()==0) return ans;
        m=matrix.size();
        n=matrix[0].size();
        this->matrix=matrix;
        int x1=0,y1=0,x2=m-1,y2=n-1;
        while(x2>x1&&y2>y1){
            myPrint(x1,y1,x2,y2);
            x1++;
            y1++;
            x2--;
            y2--;    
        }
        if(x1==x2) {
            for(int i=y1;i<=y2;i++) ans.push_back(matrix[x1][i]);
        }
        else if(y1==y2) {
            for(int i=x1;i<=x2;i++) ans.push_back(matrix[i][y1]);
        }
        return ans;
    }
};

全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务