思考:对于一个矩阵,要按顺时针打印依次打印,一般分为四个步骤,四个步骤组成一个环行,由外向里依次打印
一致的步骤图如下:(本人画的草图)
下面来分别说说这四个步骤:
步骤1:第一步从左到右打印该环的第一行
步骤2:当第一步完成后,需要从该行的最右的元素开始向下打印该环最右边的列
步骤3:第二步完成后,从右到左依次打印该环最下面行的元素
步骤4:第三步完成后,从上到下打印该环的最左边的列
以上四步就是实现顺时针打印的思路,在这里需要注意几个特殊情况,如果给定的矩阵只有一行或者只有一列或者当外向里打印时只剩下一行或者一列,那么打印的操作就走不了完整的四步。有的只需要三步,两步,甚至一步
下面我列出这几种特殊情况:
1.当给定的或者执行到最后矩阵只有一行,那么打印该矩阵只执行了步骤1就结束
2.当给定的或者执行到最后矩阵只有一列,那么打印该矩阵只执行了步骤1和步骤2就结束
3.当给定的或者执行到最后矩阵只有两行N列,那么打印该矩阵只执行了步骤1、步骤2和步骤3就结束
所以我们在实现的时候需要特别注意以上几种情况:
通过上述我们可以知道,步骤1是必然要执行的,那么步骤2的执行条件就需要该环至少有两行数据(就是说打印的一定要有两行才能打印),执行步骤3的条件就是要求该环至少有两列和两行,步骤4的条件是该环至少有三行与两列
分析完了,接下来就来上代码吧:
public class PrintMatrixInCircle {
public static void print(int[][] numbers) {
//如果给定矩阵为空 则直接return
if(