有一个二维数组(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]
==========================上面是牛客上的题、、、刚开始提交时说超时、、、然后我又重新提交时说和他打印的不一致。求大神解答===========================
public static int[] arrayPrint(int[][] arr, int n) {
// write code here
// 返回数组
int[] resIntArr = new int[n*n];
// 初始位置
int row = 0;
int col = n-1;
// 返回数组下标
int num = 0;
// 打印用
StringBuffer sf = new StringBuffer();
for (int i=1; i<2*n; i++){
boolean flag = true;
int index = 0;
while(flag){
if(col>=0 && col<n && row>=0 && row<n){
resIntArr[num] = arr[row][col];
sf.append(arr[row][col]).append(",");
col++;
row++;
index++;
num++;
}else{
flag = false;
row = (i-n<0?0:i-n+1);
col = (i-n<0?col-index-1:0);
}
}
}
System.out.println("[" + sf.substring(0, sf.toString().length()-1) + "]");
return resIntArr;
}