题目
给你一幅由 N × N
矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。
不占用额外内存空间能否做到?
题解
思路:先上下翻转,再沿着对角线进行翻转
public class Solution {
public void Rotate(int[][] matrix) {
int size = matrix.Length;
for (int i=0; i<size/2; i++)
{
for(int j=0; j<size; j++)
{
int temp = matrix[i][j];
int lowerIndex = size-i-1;
matrix[i][j] = matrix[lowerIndex][j];
matrix[lowerIndex][j]=temp;
}
}
for (int i=0; i<size; i++)
{
for(int j=0; j<i; j++)
{
int temp2 = matrix[i][j];
matrix[i][j]= matrix[j][i];
matrix[j][i]=temp2;
}
}
}
}
知识点
对矩阵使用Length求的是最大边的长度
沿对角线翻转的时候注意限制条件是j<i,否则就又二次翻转回去了