给定一个 n× n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
是什么?
一个矩阵的原地自转,不要赋值给其他矩阵,原地自转
怎么做?
这里需要一个数学方法,顺时针九十度怎么转?先沿主对角线转再沿中轴线转,这样子就是九十度了,数学思维真的很重要
思考
七七一开始看到这种题目想到的其实是另立一个矩阵来存储,因为直接动原矩阵在工作中可能会涉及安全性问题,那么题目要求,就直接对原矩阵动手,数学思维想一下其实就出来了
代码
import java.util.ArrayList;
import java.util.List;
class Solution {
// 顺时针旋转九十度
public void rotate(int[][] matrix) {
// 沿主对角线反转
for (int i = 0;i < matrix.length;i++) {
for (int j = i;j < matrix[i].length;j++) {
int t = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = t;
}
}
// 沿中轴线反转
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length / 2; j++) {
int t = matrix[i][j];
matrix[i][j] = matrix[i][matrix[i].length - j - 1];
matrix[i][matrix[i].length - j - 1] = t;
}
}
}
}
这个代码比较简单,所以是边写边注释的,注释的比较简洁
