暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据结构和算法【70】"Z" 字型打印矩阵

皮皮克克 2023-10-28
53

点击关注公众号,干货第一时间送达


还是一道非常经典的矩阵打印题目,

小编在力扣上没有找到原题,

不知道是没有,

还是关键词输入的有问题,

找到的小伙伴可以私信告诉小编一下


一、屏幕前的吴彦祖和刘亦菲们,请听题


举个例子:


其实就是折线打印:


题意明白否?

如何coding?


二、解题

矩阵打印这类题目,

一定要借助小编之前的文章:数据结构和算法【68】顺时针打印矩阵

介绍的技巧:

找辅助顶点

本题中,咱们从左上角找两个辅助点:

并且,两个顶点分别向右和向下移动。


在移动过程中,打印这两个顶点之间的对角线:

当(x1,y1)到达右边界,则向下移动;

当(x2,y2)到达下边界,则向右移动;

依据打印两个顶点间的对角线即可。


然后,对于 Z 字型打印,有从下到上,也有从上到下:

如何控制打印顺序?

简单,通过一个flag(boolean)标志控制即可。

看看代码。



完整代码:

public class CodingDemo {

    /**
     * TODO;Z字型打印矩阵
     * @param matrix
     */

    private static void zigzagPrint(int[][] matrix){
        int x1 = 0;
        int y1 = 0;
        int x2 = 0;
        int y2 = 0;
        int endR = matrix.length-1;
        int endC = matrix[0].length-1;
        boolean flag = false;
        while (x1 != endR + 1){
            process4(matrix, x1, y1, x2, y2, flag);
            //判断(x1,y1)是否到达右边界,如果达到右边界,则向下移动,
            //否则只向右移动
            x1 = y1 == endC ? x1+1 : x1;
            y1 = y1 == endC ? y1 : y1+1;
            //判断(x2,y2)是否到达下边界,如果到达下边界,则向右移动
            y2 = x2 == endR ? y2+1 : y2;
            x2 = x2 == endR ? x2 : x2+1;
            flag = !flag;
        }
    }

    private static void process4(int[][] matrix, int x1, int y1, int x2, int y2, boolean flag){
        if (flag){
            //斜对角线,从右上打印到左下
            while (x1 != x2+1){
                System.out.print(matrix[x1++][y1--] + " ");
            }
        } else {
            //斜对角线,从左下打印到右上
            while (x2 != x1-1){
                System.out.print(matrix[x2--][y2++] + " ");
            }
        }
    }

    public static void main(String[] args) {
        int[][] matrix = {
                {1,2,3,4},
                {5,6,7,8},
                {9,10,11,12},
        };
        zigzagPrint(matrix);
    }
}

输出:

D:\java\bin\java.exe
1 2 5 9 6 3 4 7 10 11 8 12 



结束语:
Ok,就是本篇文章的全部内容了。
如果各位有不懂的地方,欢迎发消息给小编,小编会进行详细地解答。
最后,请屏幕前的各位吴彦祖和刘亦菲们,动动你们的小手,给小编一个

文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论