"之"字形打印矩陣

【題目】 給定一個矩陣matrix,按照“之”字形的方式打印這 個矩陣,例如:1 2 3 45 6 7 89 10 11 12 “之”字形打印的結果爲:1,2,5,9,6,3,4,7,10,11, 8,12

【要求】 額外空間複雜度爲O(1)。

 

暴力解題思路:

通過createPoint()函數,根據第一列的座標值生成整個斜線的座標值,然後通過flag決定是否反轉.

public class SquarePrinter {
    public void print(int [] [] arr){

        boolean flag = false;
        int [] rP = new int[] {0,0};


        while (true){
            int [][] points = createPoint(rP);
            if (points == null){
                pPoints(new int [][]{{0,0}},arr);
                rP[0]++;
                continue;
            }else {
                if (flag){
                    pPoints(points,arr);
                    flag = !flag;
                }else {
                    revers(points);
                    pPoints(points,arr);
                    flag = !flag;
                }
            }

            if (rP[0] < arr[1].length - 1){
                rP[0] ++;
            }else if (rP[1] < arr[0].length -1){
                rP[1] ++;
            }else {
                break;
            }
        }
    }

    public int [][] createPoint(int [] rP){
        if (rP[0] == 0 && rP[1] == 0){
            return null;
        }
        int len = rP[0] + 1 - rP[1];
        int [][] points = new int [len][2];
        int x = rP[0];
        int y = rP[1];

        points[0][0] = rP[0];
        points[0][1] = rP[1];

        for (int i = 1; i < len; i++){
            points[i][0] = --x;
            points[i][1] = rP[0] - x + y;
        }

        return points;
    }

    public void pPoints(int [][] points,int [][] data){
        for (int i = 0; i < points.length;i++){
            System.out.print (data[points[i][0]][points[i][1]] + " ");
        }
        System.out.println();
    }

    public void revers(int [][] points){
        int len = points.length;
        for (int i = 0; i< len; i++){
            int temp = points[i][0];
            points[i][0] = points[i][1];
            points[i][1] = temp;
        }
    }
}

 

明天看一下左神的代碼,學習一下他的思路. 

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