題目描述
有一個二維數組(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;
}
}