zoukankan      html  css  js  c++  java
  • leetcode-59-螺旋矩阵 II

    题目描述:

    给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

    示例:

    输入: 3
    输出:
    [
     [ 1, 2, 3 ],
     [ 8, 9, 4 ],
     [ 7, 6, 5 ]
    ]

     

    要完成的函数:

    vector<vector<int>> generateMatrix(int n) 

    说明:

    1、这道题给定一个整数n,要求生成一个n行n列的正方形矩阵,并且矩阵按顺时针螺旋顺序存放从1到n^2的所有元素。

    2、这道题不难,我们前面做的螺旋矩阵1的代码完全可以拿过来改一改,就可以完成本道题目。

    我们仍然把矩阵分成一层一层的,按层次填入元素。

    代码如下:(附详解)

        vector<vector<int>> generateMatrix(int n) 
        {
            int k=0,count=1;//count表示我们要填入的数
            vector<vector<int>>res(n,vector<int>(n,0));//最终要返回的二维vector
            while(k<=(n-1)/2)//k表示当前处于哪一层
            {
                for(int i=k;i<=n-1-k;i++)//当前层次中最上面的那条边
                {
                    res[k][i]=count;
                    count++;
                }
                for(int i=k+1;i<=n-1-k;i++)//当前层次中最右边的那条边
                {
                    res[i][n-1-k]=count;
                    count++;
                }
                for(int i=n-2-k;i>=k;i--)//当前层次中最下面的那条边
                {
                    res[n-1-k][i]=count;
                    count++;
                }
                for(int i=n-2-k;i>=k+1;i--)//当前层次中最左边的那条边
                {
                    res[i][k]=count;
                    count++;
                }
                k++;//k+1,准备进入下一个层次
            }
            return res;//最终返回res     
        }
    

    上述代码实测4ms,beats 99.74% of cpp submissions。

  • 相关阅读:
    uC/OS-II内核的服务文件
    uC/OS-II汇编代码
    uC/OS-II类型定义
    uC/OS-II核心(Os_core)块
    uC/OS-II配置文件
    uC/OS-II应用程序exe
    uC/OS-II应用程序代码
    技术人员如何创业《四》- 打造超强执行力团队(转载)
    最近做抽奖的活动
    install docker
  • 原文地址:https://www.cnblogs.com/chenjx85/p/9484152.html
Copyright © 2011-2022 走看看