Z字形打印矩阵
给定一个矩阵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 。
【要求】 额外空间复杂度为O(1)。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[][] arr = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = in.nextInt();
}
}
zPrint(arr);
}
public static void zPrint(int[][] arr){
int row1=0,col1=0,row2=0,col2=0;
int n=arr.length,m=arr[0].length;
boolean flag = true;
while(col1<m){
print(arr,row1,col1,row2,col2,flag);
col1 = row1 < n-1 ? col1 : col1+1;
row1 = row1 < n-1 ? row1+1 : row1;
row2 = col2 < m-1 ? row2 : row2+1;
col2 = col2 < m-1 ? col2+1 : col2;
flag=!flag;
}
}
public static void print(int[][] arr,int r1,int c1,int r2,int c2,boolean flag){
// 从下往上
if(flag){
while(c1<=c2){
System.out.print(arr[r1--][c1++]+" ");
}
}else{
// 从上往下
while(c1<=c2){
System.out.print(arr[r2++][c2--]+" ");
}
}
}
}

