【牛客】二位數組的打印

題目描述

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章