Leetcode-面试题01.07-旋转矩阵

Leecode-面试题 01.07. Rotate Matrix LCCI

思路:对称旋转

题目描述

给定矩阵:N*N大小的矩阵

要得到旋转后矩阵为:

1
2
3
[7,4,1]
[8,5,2]
[9,6,3]

Solution:一次旋转,一次行对称

如上图:先由对角线[1,5,9]为轴进行旋转:

于是数组变成了:

1
2
3
[1,4,7]
[2,5,8]
[3,6,9]

然后再以每一行中点进行翻转:就得到了

1
2
3
[7,4,1]
[8,5,2]
[9,3,6]

Java

Solution :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
// 先以对角线(左上-右下)为轴进行翻转
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
// 再对每一行以中点进行翻转
int mid = n/2;
// int mid = n >> 1; 相当于除2
for (int i = 0; i < n; i++) {
for (int j = 0; j < mid; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[i][n - 1 - j];
matrix[i][n - 1 - j] = tmp;
}
}
}
}

Python

Solution :

1
2


打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信