首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-59-螺旋矩阵 II

leetcode-59-螺旋矩阵 II

作者头像
chenjx85
发布2018-08-16 11:31:22
4400
发布2018-08-16 11:31:22
举报

题目描述:

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 要完成的函数:
  • 说明:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档