之字形打印矩阵

对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。

给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。

测试样例:
[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,3
返回:[1,2,3,6,5,4,7,8,9,12,11,10]


import java.util.*;
 
public class Printer {
    private static int index = 0;
 
    public int[] printMatrix(int[][] mat, int n, int m) {
        int[] res = new int[mat.length * mat[0].length];
        int tR = 0;
        int tC = 0;
        int dR = mat.length - 1;
        int dC = mat[0].length - 1;
        boolean fromRight = false;
        while (tR != dR+1) {
            printLevel(mat, tC, dC, tR++, fromRight, res);
            fromRight = !fromRight;
        }
        return res;
    }
 
    private static void printLevel(int[][] mat, int tC, int dC, int tR,
            boolean fromUp, int[] res) {
        if (fromUp) {
            while (tC - 1 != dC) {
                res[index++] = mat[tR][dC--];
            }
        } else {
            while (tC != dC + 1) {
                res[index++] = mat[tR][tC++];
            }
        }
    }
}
 

猜你喜欢

转载自hcx2013.iteye.com/blog/2242384