牛客题霸 [螺旋矩阵] C++题解/答案

牛客题霸 [螺旋矩阵] C++题解/答案

题目描述

给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。

题解:

其实就是模拟过程,先往左走,走到头向下走,到头后向左走,再向上走
一直循环过程

代码:

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix) {
        vector<int> ret;
        if(matrix.size()==0) return ret;
        int m=matrix.size();//行数
        int n=matrix[0].size();//列数
        int up=0,down=m-1,left=0,right=n-1;
         
        while(up<=down && left<=right)
        {
            //向右移动
            for(int j=left;j<=right;j++)
                ret.push_back(matrix[up][j]);
            up++;
            //向下移动
            for(int j=up;j<=down;j++)
                ret.push_back(matrix[j][right]);
            right--;
            if(up<=down){
                //向左移动
                for(int j=right;j>=left;j--)
                    ret.push_back(matrix[down][j]);
            }
            down--;
            if(left<=right)
            {
                //向上移动
                for(int j=down;j>=up;j--)
                    ret.push_back(matrix[j][left]);
            }
            left++;
        }
        return ret;
    }
};
posted @ 2020-11-09 18:25  回归梦想  阅读(136)  评论(0编辑  收藏  举报