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

全部评论

相关推荐

牛客539033066号:放心吧,这里面一大半都不会去面试的,剩下一半面过了最后还是回拒,实际上免笔试的那些bg的人,没多少愿意去这些岗位,薪资水平在那里
点赞 评论 收藏
分享
安静的仰泳鲈鱼sp到手了:你这比赛获奖和实习,跟你的技术栈有半点关系吗😮
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务