Algorithm-HelixMatrix

date
Oct 25, 2023
slug
algorithm-helixMatrix
status
Published
tags
algorithm
type
Post
https://twitter.com/tangdahe
summary
helix matrix

螺旋矩阵

螺旋矩阵是出现频率较高的题目,并不涉及到什么算法,就是模拟过程,但却十分考察对代码的掌控能力。

59 螺旋矩阵2

而求解本题依然是要坚持循环不变量原则。
模拟顺时针画矩阵的过程:
  • 填充上行从左到右
  • 填充右列从上到下
  • 填充下行从右到左
  • 填充左列从下到上
由外向内一圈一圈这么画下去。
可以发现这里的边界条件非常多,在一个循环中,如此多的边界条件,如果不按照固定规则来遍历,那就是一进循环深似海。
这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。
那么我按照左闭右开的原则,来画一圈看一下:
notion image
这里每一种颜色,代表一条边,我们遍历的长度,可以看出每一个拐角处的处理规则,拐角处让给新的一条边来继续画。
这也是坚持了每条边左闭右开的原则。
  • 时间复杂度 O(n^2): 模拟遍历二维矩阵的时间
  • 空间复杂度 O(1)

54 螺旋矩阵

notion image
这里需要注意两个边界问题:
对于下而言,如果 top < down 就继续,需要大于两行,反之不打印
对于左而言,如果 left < right 就继续,需要大于两列,反之不打印
 

LCR 146 螺旋遍历二维数组

和上述题目类似,不再叙述

© Craig Hart 2021 - 2024