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--]+" "); } } } }