题目描述
有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。
给定一个二位数组arr及题目中的参数n,请返回结果数组。
测试样例:
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4
返回:[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]
解题思路: 沿着主对角线打印,所以每次打印之后x与y都要加1,直到x或y超出边界
import java.util.*;
public class Printer {
public int[] arrayPrint(int[][] arr, int n) {
// write code here
int[] res = new int[n*n];
int index = 0;
int startX = 0;
int startY = n-1;
while(startX<n){
int x = startX;
int y = startY;
while(x<n&&y<n)
res[index++]=arr[x++][y++];
if(startY>0)//小于0的时候,这里的转成X,输出剩下的对角线数据
startY--;
else
startX++;
}
return res;
}
}