LeetCode 面试题 01.07. 旋转矩阵
题目描述
思路分析
解法一:先转置再翻转(推荐)
核心思路:
- 先沿主对角线转置矩阵。
- 再将每一行左右翻转,等价于顺时针旋转 90 度。
- 整个过程原地完成。
复杂度分析:
- 时间复杂度:O(n^2),其中 n 表示矩阵边长。
- 空间复杂度:O(1),原地操作。
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
// 主对角线转置
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
// 每一行左右翻转
for (int i = 0; i < n; i++) {
for (int l = 0, r = n - 1; l < r; l++, r--) {
int tmp = matrix[i][l];
matrix[i][l] = matrix[i][r];
matrix[i][r] = tmp;
}
}
}
}
func rotate(matrix [][]int) {
n := len(matrix)
// 主对角线转置
for i := 0; i < n; i++ {
for j := i + 1; j < n; j++ {
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
}
}
// 每一行左右翻转
for i := 0; i < n; i++ {
for l, r := 0, n-1; l < r; l, r = l+1, r-1 {
matrix[i][l], matrix[i][r] = matrix[i][r], matrix[i][l]
}
}
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 48. 旋转图像 | 中等 | 矩阵旋转 |
| 54. 螺旋矩阵 | 中等 | 矩阵遍历 |
| 59. 螺旋矩阵 II | 中等 | 矩阵构造 |
| 73. 矩阵置零 | 中等 | 矩阵 |
| 867. 转置矩阵 | 简单 | 矩阵 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!