题目
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,
将图像旋转 90 度。不占用额外内存空间能否做到?
示例
给定 矩阵
[
[1,2,3],
[4,5,6],
[7,8,9]
],
原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
思路:先将其写斜对角线翻折,再对每行以中点为中心翻折
[1,2,3], [1,4,7], [7,4,1],
[4,5,6], ===> [2,5,8], ===> [8,5,2],
[7,8,9] [3,6,9] [9,6,3]
代码
public void rotate(int[][] matrix) {
for(int i=0; i<matrix.length; i++){
for(int j=i+1; j<matrix[0].length; j++){
int t = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = t;
}
}
int n = matrix.length;
int mid = n/2;
for(int i=0; i<matrix.length; i++){
for(int j=0; j<mid; j++){
int t = matrix[i][j];
matrix[i][j] = matrix[i][n-j-1];
matrix[i][n-j-1] = t;
}
}
}
大家如果感兴趣可以前去手搓
本分类只用作个人记录,大佬轻喷.