Open Shawngbk opened 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; } } } /
(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;
}
} / 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; } } } /