输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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]
解题思路:这题其实没有太设计到算法的东西,只需要按照顺时针顺序走一遍矩阵模拟下这个过程就可以了
- 首先定义二维数组的四个边界:
up , down , left , right
- 然后按照右,下,左,上的顺序进行循环打印就可以了,打印规则:
- 沿着
up
,从左向右打印,打印完up++
; - 沿着
right
,从上到下打印,打印完right--
; - 沿着
down
,从右到左打印,打印完down--
; - 沿着
left
,从下往上打印,打印完left++
l;
- 沿着
整体放入while循环中即可,循环条件:left <= right && up <= down
这里需要注意的一点就是在从右往左打印和从下网上打印时候,需要保证left <= right && up <= down
,这里需要判断的原因就是当走到最后一行的时候如果不进行判断,会造成重复回到前面去添加,就是“往回走” 的情况
代码:
class Solution {
public int[] spiralOrder(int[][] matrix