🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程
54 Spiral Matrix I (螺旋矩阵 I)
题目属于Array类题目,主要用到矩阵,数组,和模拟。对于Array题目,可以暴力解法,二分查找,双指针,滑动窗口,递归算法)。
原题描述:
给定一个 m x n 矩阵,按螺旋顺序返回矩阵的所有元素。
这题一上来描述贼少,但是图型描述可不少。直接扔出两个矩阵便于广大怨种理解,好了,是难办的数据矩阵一类。遥想当年还是在大学,坐在教室后排在上着线性代数,同时看长发飘飘女同学时候。。。啪!继续看题!
这里我个人小白理解分析:
思考1:如果只有一行,那就好办了,两维结构如何处理,第一行走到头了怎么改变方向?
思考2:第一行走到最右边时候,需要开始往下走,也就是箭头方向顺时针90°;
当走完第一行之后,剩余部分,可以继续采用顺时针旋转90°,继续遍历,这里就可以用递归解决。
这里用[r, c]记录当前位置,也就是row与column。下一个位置为[r’, c’] = [r + dr, c + dc], dr与dc分别为不同方向的行与列变化。
Index | Direction | dr | dc |
---|---|---|---|
0 | Right | 0 | 1 |
1 | Down | 1 | 0 |
2 | Left | 0 | -1 |
3 | Up | -1 | 0 |
遍历的方向为 Right ➡ Down ➡ Left ➡ Up
这里就又要想到那个教室线性代数课,和那个黑长直了。