螺旋矩阵(NC38/考察次数Top27/难度入门)

Posted 码农指南

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了螺旋矩阵(NC38/考察次数Top27/难度入门)相关的知识,希望对你有一定的参考价值。

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

示例1
输入:
[[1,2,3],[4,5,6],[7,8,9]]
返回值:
[1,2,3,6,9,8,7,4,5]

class Solution{
public:
    vector<int> spiralOrder(vector<vector<int> > &matrix){   //矩阵可以使用嵌套的两个vector来使用,此处为定义函数
        vector<int> result;                                  //定义一个与函数同类型的变量用来作为函数的返回值
        if(matrix.size()==NULL)
        {
            return result;
        }
        int i, left=0, right=matrix[0].size()-1, top=0, down=matrix.size()-1;       //定义一下左、右以及上、下的边界线
        while(left<=right&&top<=down){                                              //循环进行的条件

            for(i=left;i<=right;i++)
                result.push_back(matrix[top][i]);      //将top排数据pash_back到result里面(注意vector使用push_back插入)
            top++;                                     //插值完后,top++
            for(i=top;i<=down;i++)
                result.push_back(matrix[i][right]);    //将right排数据push_back到result里面
            right--;                                   //插值完后right--           
            //内部循环进行时其实都是满足条件的,只是上面
            //进行了top++,right--的操作,为了防止同排或者同列处理两次,需要进行判断
            if(top<=down)                              //条件判断,防止同排算入两次
            for(i=right;i>=left;i--)
                result.push_back(matrix[down][i]);     //将down排数据push_back到result里面
            down--;                                    //插值完后down--
            if(left<=right)                            //条件判断,防止同列算入两次
            for(i=down;i>=top;i--)
                result.push_back(matrix[i][left]);     //将left排数据push_back到result里面
            left++;                                    //插值完后进行left++
        }
        return result;
    }
};

纯手撕代码,如果觉得内容不错麻烦点个赞,后面陆续配上Top100算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!

以上是关于螺旋矩阵(NC38/考察次数Top27/难度入门)的主要内容,如果未能解决你的问题,请参考以下文章

判断回文(NC141/考察次数Top43/难度入门)

寻找峰值(NC107/考察次数Top70/难度入门)

寻找峰值(NC107/考察次数Top70/难度入门)

寻找峰值(NC107/考察次数Top70/难度入门)

反转字符串(NC103/考察次数Top26/难度入门)

字符串的排列(NC121/考察次数Top38/难度较难)