二维数组的花式遍历技巧

48. 旋转图像

54. 螺旋矩阵

59. 螺旋矩阵 II

 

这篇文章介绍几种花式遍历二维数组的技巧,废话少说,直接上题目!!

旋转图像

详情可见题目 旋转图像

今天 (2022-04-08 20:36:26) 看到这个题目的时候,突然想起来了自己在很久很久前写了一丢丢小小的技巧总结,贴出链接 link

哈哈哈哈哈哈,居然还看到有一个外国人评论我了,今日份开心!!!!

看了上面贴出来的总结,相信就很明了了。就是一种很常规的思路。唯一的弊端就是,需要分析清楚移动元素的「下标关系」,绕来绕去的,很容易搞错!

今天学习了一种全新的思路,好家伙,直接 OMG,惊呆了!!

 

这里先上一个引例

对于字符串I am a good boy,如何原地反转所有单词的顺序,反转后的结果应该为boy good a am I

相信很多人的惯性思维就是,先根据「空格」切分字符串,然后把「首尾元素」交换

 

这里提供一种新的思路

 

好了,针对今天的题目,我们的思路「先沿 左上-右下 的对角线翻转,然后对每一行进行反转」,如下图所示:

1

这个题目是顺时针,如果是逆时针,也只需要稍作变化即可,如下图所示:

2

是不是有种发现新大陆的感觉,哈哈哈哈哈

下面是题目的详细代码 (顺时针)

螺旋矩阵

详情可见题目 螺旋矩阵

这个题目其实没有什么技巧可言,就是模拟螺旋移动的过程

需要注意的是,边界的控制,以及下标的变化。请详细看代码中的注释,写的很清楚了,同时结合下面的图

3

螺旋矩阵 II

详情可见题目 螺旋矩阵 II

这个题目就是上面题目的逆过程,把代码稍微修改一下即可