码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-59-螺旋矩阵 II

时间:2018-08-15 22:52:01      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:sub   leetcode   二维   iss   ack   示例   tor   html   要求   

题目描述:

给定一个正整数 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。

leetcode-59-螺旋矩阵 II

标签:sub   leetcode   二维   iss   ack   示例   tor   html   要求   

原文地址:https://www.cnblogs.com/king-3/p/9484152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!