leetcode面试题 01.07. 旋转矩阵

leetcode面试题 01.07. 旋转矩阵

四月 11, 2020

leetcode面试题 01.07. 旋转矩阵


给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。

不占用额外内存空间能否做到?

示例 1:
给定 matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]

每日打卡这么多天,总算有简单的了。如果不复制数组的办法:先对角线翻转,再上下翻转。(这个想法在哪来的?我以前看过类似的题)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void rotate(int[][] matrix) {
int x = matrix[0].length - 1;
int y = matrix.length - 1;
//第一步,对角线对称
for (int i = 0; i <= y; i ++) {
for (int j = 0; j <= x; j ++) {
//这里的规律可以画出来,在纸上找一下
int t = matrix[i][j];
matrix[i][j] = matrix[y - j][x];
matrix[y - j][x] = t;
}
x --;
}
//第二步,上下对称
x = matrix[0].length - 1;
for (int i = 0; i <= (y>>1); i ++) {
for (int j = 0; j <= x; j ++) {
int t = matrix[i][j];
matrix[i][j] = matrix[y - i][j];
matrix[y - i][j] = t;
}
}
}

leetcode 72/100