题解 | #螺旋矩阵#

螺旋矩阵

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

public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> ans;
        int col=matrix.size();
        int row=matrix[0].size();
        if(col==0 || row==0)
            return {};
        //定义上下左右四个边界
        int u=0;
        int d=col-1;
        int l=0;
        int r=row-1;
        while(true)
        {
            //顺序一定是右下左上
            //向右边
            for(int i=l; i<=r; i++)
                ans.push_back(matrix[u][i]);
            //重新定义上边界
            if(++u>d)   break;
            
            //向下
            for(int i=u; i<=d; i++)
                ans.push_back(matrix[i][r]);
            //定义右边界
            if(--r<l)   break;
            
            for(int i=r; i>=l; i--)
                ans.push_back(matrix[d][i]);;
            if(--d<u)   break;

            for(int i=d; i>=u; i--)
                ans.push_back(matrix[i][l]);
            if(++l>r)   break;
        }
        return ans;
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务