LeetCode 面试题 01.07. 旋转矩阵

题目描述

面试题 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. 转置矩阵 简单 矩阵
本文作者:
本文链接: https://hgnulb.github.io/blog/2024/10881132
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!