顺时针打印矩阵

1.设置四个变量,左,右,上,下 来记录当前打印到哪个边界
2外循环里包裹从右到左,从上到下,从右到左,从下到上,四个子循环
3.外循环继续的条件是 (up <= down && left <= right)
4.可能是坑:

当数组是{1,2,3,4}(就是行数是单数的情况下)这样的时候,进入从右到左的时候(子循环3)需要先判断当前的down和up变量是否满足关系,不然就会打印和和本次从左到右重复的内容
同理,列数是单数的情况下,也需要在子循环4加判断条件

public static void printClockwise(int[][] array){
        int left = 0 ;
        int right = array[0].length - 1;
        int up = 0;
        int down = array.length - 1;
        
        int index = 0;
        
        while(right >= left && down >= up){
            //子循环1,从左到右
            index = left;
            while(index <= right){
                System.out.print(array[up][index] + " ");
                index ++;
            }
            up++;
            
            //子循环2,从上到下
            index = up;
            while(index <= down){
                System.out.print(array[index][right] + " ");
                index++;
            }
            right--;
            
            //子循环3,从右到左,避免入坑,需要加这个判断条件防止打印出和从左到右一样的循环
            if (up <= down) {
                index = right;
                while (index >= left) {
                    System.out.print(array[down][index] + " ");
                    index--;
                }
                down--;
            }
            
            //子循环4,同理,加判断语句
            if (left <= right) {
                index = down;
                while (index >= up) {
                    System.out.print(array[index][left] + " ");
                    index--;
                }
                left++;
            }
        }
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 ...
    wuzhiguo阅读 1,292评论 0 0
  • 顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: ...
    echoVic阅读 725评论 0 2
  • 我的想法就是先定下四个角的坐标,然后按行和列打印 这里很重要的是,如果你想用x,y来代表坐标,一点不要把数组的规律...
    AwesomeAshe阅读 512评论 0 1
  • 前言 最近在刷《剑指offer》算法题,看到了顺时针打印矩阵的题目,感觉作者处理这个题目时逻辑有点复杂,是通过找规...
    _hudson_阅读 450评论 0 0
  • 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7...
    鸿雁长飞光不度阅读 208评论 0 0