题目: 之字形打印矩阵
难度: 低
对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。
给定一个整数矩阵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]
**解题思路:**用其输出特点来解题,对于一个矩阵该题输出方式可理解为下标为偶数的行正向输出,下标为偶数的反向输出。与该题类似的题还有:旋涡型输出一个矩阵。这种题型千万不能按下标一个一个判断后输出。
该题的一个解:
public class PrintMatrix {
public static int[] printM(int[][] mat, int n, int m) {
int[] arr1 = new int[n * m];
int p = 0;
for (int i=0; i<n; ++i) {
// 如果是奇数行
System.out.println(i%2);
if(i%2==0) {
int k = 0;
while(k != m) {
arr1[p++] =
mat[i][k++];
}
}else { // 偶数行
int y = 0;
while(y++!=m) {
arr1[p++] =
mat[i][m-y];
}
}
}
return arr1;
}
public static void main(String[] args) {
int n = 4; // n是行数
int m = 3;
int[][] arr = {{1,2,3}, {4,5,6},{7,8,9},{10,11,12}};
int[] is = printM(arr, n, m);
for (int i : is) {
System.out.print(i+" ");
}
}
}