算法题每日一练:螺旋矩阵 II
一、问题描述
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
题目链接:螺旋矩阵 II。
二、题目要求
样例 1
样例 2
考察
三、问题分析
这一题主要考察模拟思想,比较经典的一道题目了。
首先我们先来确定方向与边界问题,首先定义为上、下、左、右四个方向,
分别用四个字母 u、d、l、r 代表
其中,u=0(最上面的一行)、d=行数、l=0(最左侧的一列)、r=列数。
看着上面的图我们实际模拟一下每一种情况
1->2->3->4 代表着 l->r 的方向,其中行=u,列从 l->r 逐步+1,到了 4 之后,向下转向 8,那么 u 下降一行,++u
8->12->16 代表着 u->d 的方向,其中列=r,行从 u->d 逐步+1,到了 16 之后,向左转向 15,那么 r 向左移动一列,--r
15->14->13 代表着 r->l 的方向,其中行=d,列从 r->l 逐步-1,到了 13 之后,向上转向 9,那么 d 向上移动一行,--d
9->5 代表着 d->u 的方向,其中列=l,行从 d->u 逐步-1,到了 5 之后,向右转向,那么 l 向右移动一列,++l
上面就是一个循环内部的四次操作,对于循环内边界的判断:
第一步 ++u>d ,退出循环
第二步 --r<l ,退出循环
第三步 --d<u ,退出循环
第四步 ++l>r ,退出循环
上面的解法思路是给你数组,让你输出矩阵。改变一下思路就是这一道题目给你范围,让你输出数组。
四、编码实现
五、测试结果
版权声明: 本文为 InfoQ 作者【知心宝贝】的原创文章。
原文链接:【http://xie.infoq.cn/article/83616a488cc040bd4964a74a5】。文章转载请联系作者。
评论