题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印每一个数字,例如,如果输入如下4*4矩阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。
解题思路
- 因为一个二维平面,给定两个坐标(x1, y1)和(x2, y2)可以唯一确定一个矩阵。
- 然后可以通过圈子来打印对应的矩阵,然后缩小圈子完成整个过程即可。
图解过程
这个时候就打印出了1,2,3,4,8,12,16,15,14,13,9,5。
然后这个时候缩小圈子继续重复:
这个时候继续打印出6,7,11,10。然后全部拼接起来就是答案了。
代码
1 | import java.util.ArrayList; |
通过截图:
总结
如果你要是通过规律来顺时针打印矩阵的话会显得非常麻烦,我不是说不按照我的方法做不出来,只是会比较麻烦,coding能力较差的人可能会写不出来,但是把一个矩阵分解成多个圈子打印即可,打印单独写一个函数即可完成。
PS:觉得博主写的还可以的点点赞,关注走一波,谢谢大家的支持了~~~