一、题目
给你一幅由 N × N
矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
不占用额外内存空间能否做到?
二、解题思路
将矩阵沿对角线翻折一次,再沿中心对称轴翻折一次。
三、代码
class Solution {
public void rotate(int[][] matrix) {
int n=matrix.length;
//沿对角线交换一次
for(int i=0;i<n;i++) {
for(int j=0;j<i;j++) {
int temp=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=temp;
}
}
//沿中心轴交换一次
for(int i=0;i<n;i++) {
for(int j=0;j<(n+1)/2;j++) {
int temp=matrix[i][j];
matrix[i][j]=matrix[i][n-1-j];
matrix[i][n-1-j]=temp;
}
}
}
}