对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。
给定一个整数矩阵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++]; } } } }