书籍“之“字形打印矩阵(8)0609

题目

给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如:

1 2 3 4

5 6 7 8

9 10 11 12

"之"字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12

1.上坐标(tR,tC)初始为(0,0),先沿着矩阵第一行移动(tC++),当到达第一行最右边的元素后,再沿着矩阵最后一列移动(tR++)。

2.下坐标(dR,dC)初始为(0,0),先沿着矩阵第一列移动(dR++),当到达第一列最下边的元素时,再沿着矩阵最后一行移动(dC++)。

3.上坐标与下坐标同步移动,每次移动后的上坐标与下坐标的连线就是矩阵中的一条斜线,打印斜线上的元素即可。

4.如果上次斜线是从左下向右上打印的,这次一定是从右上向左下打印,反之亦然。

java 复制代码
public void printMatrixZigZag(int[][] matrix){
    int tR = 0;
    int tC = 0;
    int dR = 0;
    int dC = 0;
    int endR = matrix.length - 1;
    int endC = matrix[0].length - 1;
    boolean = fromUp = false;
    while(tR != endR + 1){
        printLevel(matrix,tR,tC,dR,dC,fromUp);
        tR = tC == endC ? tR + 1 : tR;
        tC = tC == endC ? tC : tC + 1;
        dC = dR == endR ? dC + 1 : dC;
        dR = dR == endR ? dR : dR + 1;
        fromUp = !fromUp;
    }
    System.out.println();
}

public void printLevel(int[][] m, int tR, int tC, int dR, int dC,boolean f){
    if(f){
        while(tR != dR + 1){
            System.out.print(m[tR++][tC--] + " ");
        }
    }else{
        while(dR != tR - 1){
            System.out.print(m[dR--][dC++] + " ");
        }
    }
}
相关推荐
CoderYanger17 小时前
递归、搜索与回溯-综合练习:27.黄金矿工
java·算法·leetcode·深度优先·1024程序员节
zs宝来了17 小时前
HOT100系列-堆类型题
数据结构·算法·排序算法
Christo317 小时前
ICML-2019《Optimal Transport for structured data with application on graphs》
人工智能·算法·机器学习·数据挖掘
vx_vxbs6617 小时前
【SSM高校普法系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
android·java·python·mysql·小程序·php·idea
张较瘦_17 小时前
Springboot3 | ResponseEntity 完全使用教程
java·springboot·开发
毕设源码-郭学长17 小时前
【开题答辩全过程】以 高校兼职系统为例,包含答辩的问题和答案
java·spring boot
sin_hielo17 小时前
leetcode 1590
数据结构·算法·leetcode
黄嚯嚯17 小时前
Jackson 多态反序列化详解:基于字段自动选择子类的优雅方案
java
吃着火锅x唱着歌17 小时前
LeetCode 2748.美丽下标对的数目
数据结构·算法·leetcode
做怪小疯子17 小时前
LeetCode 热题 100——二叉树——二叉树的中序遍历
算法·leetcode·职场和发展