LC-48:旋转图像
我的实现思路:
最简单的就是对这个n*n的二维数组进行先水平翻转,在进行根据主对角线进行反转。
原始的:
1 2 3 7 8 9 7 4 1
4 5 6 ======= 4 5 6 ======= 8 5 2
7 8 9 1 2 3 3 6 9
值的说的是,对于主对角线进行反转的时候。对于行来说应该是全部,对于列还说应该是根据行的编号来确定,不需要对列进行全部的遍历。
我的实现代码:
class Solution { public void rotate(int[][] matrix) { // 1、先是水平翻转 for (int i = 0,j = matrix.length - 1; i < matrix.length / 2; i++, j--) { for (int k = 0; k < matrix[0].length; k++) { int temp = matrix[i][k]; matrix[i][k] = matrix[j][k]; matrix[j][k] = temp; } } // 2、再是根据主对角线翻转 for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < i; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } } }