1. 程式人生 > >LeetCode: 48. Rotate Image

LeetCode: 48. Rotate Image

leetcode png i++ pro pre ota println blog ati

1. 原題鏈接

https://leetcode.com/problems/rotate-image/description/

2. 題目要求

給定一個由 n*n 的二維數組 matrix[ ] [ ] 構成的矩陣,將這個矩陣順時針方向旋轉90度,並輸出。如下圖所示

技術分享圖片

3. 解題思路

首先對每一行進行交換,得到上圖中的中間結果;

然後再交換 關於對角線對稱的元素:matrix [ i ][ j ] 和 matrix[ j ][ i ]。如下圖所示:

技術分享圖片

4. 代碼實現

public class RotateImage48 {
    public static void main(String[] args) {
        int[][] matrix = {{1, 2, 3, 5}, {4, 5, 6, 7}, {7, 8, 9, 9}, {2, 3, 4, 5}};
        rotate(matrix);
        for (int[] x : matrix) {
            for (int y : x)
                System.out.print(y + " ");
            System.out.println();
        }

    }

    public static void rotate(int[][] matrix) {
        int a = 0, b = matrix.length - 1;
        // 交換行
        while (a < b) {
            int[] temp = matrix[a];
            matrix[a] = matrix[b];
            matrix[b] = temp;
            a++;
            b--;
        }

        //交換對稱元素
        for (int i = 0; i < matrix.length; i++) {
            for (int j = i + 1; j < matrix[i].length; j++) {
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
    }


}

  

LeetCode: 48. Rotate Image