前言
这道题刚开始没思路,想着要用数学方法求解,于是想到了矩阵
一、旋转图像
题目:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
摘要:旋转数组
原思想:
先交换第一行和最后一行,然后交换第二行和倒数第二行,然后交换第三行和倒数第三行。。。到交换到行不能交换为止,
然后以对角线为中心,对称的交换对角线两边的元素
原代码:
class Solution {
public void rotate(int[][] matrix) {
int length = matrix.length;
int[] temp = new int[length];
//先交换行,再对角线交换
//交换行
for(int i=0;i<length/2;i++){
temp = matrix[i];
matrix[i] = matrix[length-i-1];
matrix[length-i-1] = temp;
}
//交换对角线
for(int i=0;i<length;i++){
for(int j=i;j<length;j++){
int temps = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temps;
}
}
}
}