题目描述
【题目】 给定一个矩阵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)。
CODE
public static void printMatrixZigZag(int[][] matrix){
int aR = 0;
int aC = 0;
int bR = 0;
int bC = 0;
int endR = matrix.length;
int endC = matrix[0].length;
boolean flag = false;
ArrayList<Integer> result = new ArrayList<Integer>();
while(aR != endR+1){
printlevel(matrix,aR,aC,bR,bC,flag,result);
aR = aC == endC ? aR+1 : aR;
aC = aC == endC ? aC : aC+1;
bR = bR == endR ? bR : bR+1;
bC = bR == endR ? bC+1; bC;
flag = !flag;
}
}
public static void printlevel(int[][] m, int aR, int aC, int bR, int bC, boolean flag, ArrayList result){
if(flag){ // 右向左
while(aR != bR+1){
result.add(m[aR++][aC--]);
}
}else{ // 左向右
while(bR != aR-1){
result.add(m[bR--][bC++]);
}
}
}