package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev
# README
顺时针打印矩阵
1. 题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
2. 示例
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
限制:
0 <= matrix.length <= 100
0 <= matrix[i].length <= 100
3. 解题
-
设置标记数组,[下,左,上,右] -> [(1, 0), (0, -1), (-1, 0), (0, 1)] 从m[0,0]开始遍历,当遇到边界或已访问数据时,尝试按照上述标记数组循环改变方向:
- 若改变方向后仍可访问,则继续遍历
- 若改变方向后仍不可访问,则结束
-
还可采用向内收缩法,开始时设置l,r,t,b四个标志,表示四个方向的边界
- 当打印完一一行或一列时,将对应的标志向内收缩一
- 直到标志重合
-
矩阵转置法 每次打印完第一行后,将剩余的矩阵进行转置并倒置,再次打印第一行,直到矩阵不存在