mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 11:05:36 +00:00
Update 29. 顺时针打印矩阵.md
调整顺时针打印矩阵的解题思路描述,精简分层处理逻辑,并补充单行与单列打印时的边界条件说明。
This commit is contained in:
@@ -14,7 +14,9 @@
|
||||
|
||||
## 解题思路
|
||||
|
||||
一层一层从外到里打印,观察可知每一层打印都有相同的处理步骤,唯一不同的是上下左右的边界不同了。因此使用四个变量 r1, r2, c1, c2 分别存储上下左右边界值,从而定义当前最外层。打印当前最外层的顺序:从左到右打印最上一行-\>从上到下打印最右一行-\>从右到左打印最下一行-\>从下到上打印最左一行。应当注意只有在 r1 != r2 时才打印最下一行,也就是在当前最外层的行数大于 1 时才打印最下一行,这是因为当前最外层只有一行时,继续打印最下一行,会导致重复打印。打印最左一行也要做同样处理。
|
||||
一层一层从外到里打印,每一层的处理步骤相同,只是上下左右的边界不同。因此使用四个变量 r1, r2, c1, c2 分别存储上下左右边界值,从而定义当前最外层。打印当前最外层的顺序:从左到右打印最上一行-\>从上到下打印最右一行-\>从右到左打印最下一行-\>从下到上打印最左一行,打印完把四个边界各向内收缩一格。
|
||||
|
||||
需要注意的是,只有在 r1 != r2 时才打印最下一行:当前最外层只有一行时,最下一行就是刚打印过的最上一行,再打印会重复。同理,只有在 c1 != c2 时才打印最左一列。
|
||||
|
||||
<div align="center"> <img src="pics/offer29-spiral-layers.png" width="620px"/> </div><br>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user