题解 | #螺旋矩阵#

螺旋矩阵

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

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
                vector<int> arr;
        if(matrix.size()==0)
            return arr;
        int m=matrix.size();
        int n=matrix[0].size();

        //m行n列的矩阵
        //采用分圈处理法
        int x1=0,y1=0,x2=m-1,y2=n-1;
        while(x1<=x2&&y1<=y2){
            //如果只有一行
            if(x1==x2){
                for(int i=y1;i<=y2;i++)
                    arr.push_back(matrix[x1][i]);
            }
            //如果只有一列
            else if(y1==y2){
                for(int i=x1;i<=x2;i++)
                    arr.push_back(matrix[i][y1]);
            }
            //否则的话螺旋打印
            else{
                //从左往右
                int i=x1,j=y1;
                while(j<=y2){
                    arr.push_back(matrix[i][j]);
                    j++;
                }
                //从上往下
                i=x1+1;
                j=y2;
                while(i<=x2){
                    arr.push_back(matrix[i][j]);
                    i++;
                }
                //从右往左
                j=y2-1;
                i=x2;
                while(j>=y1){
                    arr.push_back(matrix[i][j]);
                    j--;
                }
                //从下往上
                i=x2-1;
                j=y1;
                while(i>x1){
                    arr.push_back(matrix[i][j]);
                    i--;
                }
            }
            x1++;y1++;
            x2--;y2--;
        }
        return arr;
    }
};
全部评论

相关推荐

今天 12:20
门头沟学院 运营
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
king122:专业技能不要写这么多,熟悉和熟练你经不住问,排版有些难看,中间的空隙搞小一点,项目描述的话感觉是从课程中抄下来的,改一改吧,不然烂大街了,每个项目都写一两点,用什么技术实现了什么难点,然后再写一些数字上去像时间又花了90%这样,这样面试会多一些,如果觉得自己的项目还是不够用的话,我有几个大厂最近做过的实习项目,感兴趣的话可以看我简介中的项目地址
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 10:56
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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