Shawngbk / Leecode

Questions of Leecode
0 stars 0 forks source link

48. Rotate Image #22

Open Shawngbk opened 7 years ago

Shawngbk commented 7 years ago

(1)题意为给定一个n_n的矩阵代表一幅图像,求将其顺时针旋转90度后所得矩阵。 (2)该题主要考察对二维数组的操作。n_n的矩阵显然是一个正方形,其实可对该题进行扩展为任意m_n的矩形,效果差不多。将n_n的矩阵形式化为一个n*n的二维数组,对二维数组的旋转就转化为对二维数组中元素位置的调整了,通过对比发现转换前后对应关系为:result[i][j] = matrix[row-1-j][i],其中result为新创建的数组用于存储转换后的 元素,matrix为目标数组。需要注意的是,得到result数组后还需将其中的元素赋值到原始数组中,才能达到对原始数组的旋转。

public class Solution { public int[][] rotate(int[][] matrix) { if(matrix.length == 0 ||matrix[0].length == 0) {
return null;
}

    int row = matrix.length;
    int col = matrix[0].length;

    int[][] res = new int[row][col];
    for(int i = 0; i < row; i++) {
        for(int j = 0; j < col; j++) {
            res[i][j] = matrix[row-1-j][i];
        }
    }

    for(int i = 0; i < res.length; i++) {
        for(int j = 0; j < res.length; j++) {
            matrix[i][j] = res[i][j];
        }
    }
    return matrix;
}

} / public void rotate(int[][] matrix) { int n = matrix.length; for (int i = 0; i < n / 2; i++) { for (int j = 0; j < Math.ceil(((double) n) / 2.); j++) { int 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; } } } /