螺旋矩阵问题其实是模拟行为的一种,是数组结构中比较好解决的问题了。这种类型的题目可以说在面试中出现频率较高,但并不涉及到什么复杂算法,就是模拟过程,但却十分考察对代码的掌控能力。

核心思想

我们可以生成一个 n×n 空矩阵 matrix,随后模拟整个向内环绕的填入过程。

先设定上下左右四个边界赋予初值。然后按照 从左到右 从上到下 从右到左 从下到上 填入顺序循环,每次填入后更新上下左右四个边界的值即可。

为什么写不好四边界

相信很多同学刚开始做这种题目的时候,上来就是一波判断猛如虎。

结果运行的时候各种问题,然后开始各种修修补补,最后发现改了这里哪里有问题,改了那里这里又跑不起来了。

大家还记得我们在 704. 二分查找 这道题中讲解了二分法,提到如果要写出正确的二分法一定要坚持循环不变量原则

一些同学做这道题目之所以一直写不好,代码越写越乱。

就是因为在画每一条边的时候,一会左开又闭,一会左闭右闭,一会又来左闭右开,岂能不乱。

image.png
这里一圈下来,我们要画四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。