LeetCode [54] 螺旋矩陣

給出一個二維數組,將其逆序打印

描述:

二位數組:

                {1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12},
                {13, 14, 15, 16}

將其按照逆時針的順序打出來如下:

1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

思路

可以看出,每次打印出一次,都是將數組按照逆時針的順序所打印,然後再打印裏面的一層。最終得到結果。

代碼:

 public void printArray(int[][] arr) {
        int leftrow = 0, leftcol = 0, rightrow = arr.length - 1, rightcol = (arr[0].length) - 1;
        while (leftrow <= rightrow && leftcol <= rightcol) {
            int r = leftrow;
            int c = leftcol;
            while (c <= rightcol) {
                System.out.print(arr[r][c++] + "\t");
            }
            //復位,中和上一輪多加的一次
            c = rightcol;
            //移動到下一行,不會重複打印
            r++;
            while (r <= rightrow) {
                System.out.print(arr[r++][c] + "\t");
            }
            r = rightrow;
            c--;
            while (c >= leftcol) {
                System.out.print(arr[r][c--] + "\t");
            }
            c = leftcol;
            r--;
            while (r > leftrow) {
                System.out.print(arr[r--][c] + "\t");
            }
            leftrow ++;
            leftcol ++;
            rightcol --;
            rightrow --;
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章