NC38 螺旋矩阵
给出一个 n n n 行 m m m 列的二维数组,按螺旋的顺序返回矩阵中的所有元素。
比如,输入为:
[1,2,3]
[4,5,6]
[7,8,9]
输出为:
[1,2,3,6,9,8,7,4,5]

观察上图,螺旋遍历可定义为从左上角开始,按照顺时针方向,从外向内依次遍历所有元素。

如上图示,可将二维数组拆解为若干个环。由外向内的,从左上角开始遍历每一个环,即可完成对整个二维数组的螺旋遍历。特殊的,当行或列为奇数时,位于中心处的“环”只有一行或一列。
接下来,将整个问题拆解为三个步骤:
- 确定环的数量
- 确定每个环包含的元素
- 由外向内遍历每一个环

观察上图,环的数量取决于 n n n 和 m m m 中较小值,不妨设 x = min ( n , m ) x=\min(n,m) x=min(n,m),尝试寻找 x x x 和环数 c n t cnt cnt 之间的规律:
- x = 1 x = 1 x=1 , c n t = 1 cnt=1 cnt=1
- x = 2 x = 2 x=2 , c n t = 1 cnt=1 cnt=1
- x = 3 x = 3 x=3 , c n t = 2 cnt=2

本文解析了如何使用螺旋顺序遍历 nn×mm 的二维数组,通过确定环数和环内元素划分,展示了如何拆解并遍历这些环。关键步骤包括确定环数 cnt = ⌈x/2⌉,理解环的四部分结构,并处理边界情况。
最低0.47元/天 解锁文章
3662

被折叠的 条评论
为什么被折叠?



