Description

You are given an _n _x _n _2D matrix representing an image. Rotate the image by 90degrees (clockwise).

Example

Given a matrix

[
    [1,2],
    [3,4]
]

rotate it by 90 degrees (clockwise), return

[
    [3,1],
    [4,2]
]
Solution

四个顶点单独处理,因为这条边的第一个点是相邻边的最后一个点。如果一起处理就会处理两次

public class Solution {
    /*
     * @param matrix: a lists of integers
     * @return: 
     */
    public void rotate(int[][] matrix) {
        // write your code here
        if (matrix == null || matrix.length == 0 || matrix[0] == null || matrix[0].length == 0 || matrix.length != matrix[0].length) {
            return;
        }

        int n = matrix.length;
        for (int i = 0; i < n/2; i++) {
            int temp = matrix[i][i];
            matrix[i][i] = matrix[n - 1  - i][i];
            matrix[n - 1  - i][i] = matrix[n - 1 - i][n - 1 - i];
            matrix[n - 1 - i][n - 1 - i] = matrix[i][n - 1 - i];
            matrix[i][n - 1 - i] = temp;
            for (int j = i + 1; j < n - i - 1; j++) {
                temp = matrix[i][j];
                matrix[i][j] = matrix[n - 1 - j][i];
                matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];
                matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];
                matrix[j][n - 1 - i] = temp;
            }
        }
    }
}

results matching ""

    No results matching ""