欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > leetcode hot100【LeetCode 48.旋转图像】java实现

leetcode hot100【LeetCode 48.旋转图像】java实现

2025/2/8 11:58:42 来源:https://blog.csdn.net/qq_14815605/article/details/144090169  浏览:    关键词:leetcode hot100【LeetCode 48.旋转图像】java实现

LeetCode 48.旋转图像

题目描述

给定一个 n x n 的二维矩阵 matrix,表示一个图像。请你将该图像顺时针旋转 90 度。

说明

  • 你必须在 原地 修改输入的二维矩阵。
  • 你可以假设矩阵的所有元素将会是整数。

示例 1:

输入:

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

输出:

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

示例 2:

输入:

[[ 5, 1, 9, 11],[ 2, 4, 8, 10],[13, 3, 6, 7],[15, 14, 12, 16]
]

输出:

[[15, 13, 2, 5],[14, 3, 4, 1],[12, 6, 8, 9],[16, 7, 10, 11]
]

Java 实现代码

class Solution {public void rotate(int[][] matrix) {int n = matrix.length;// 1. 转置矩阵for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {// 交换matrix[i][j]和matrix[j][i]int temp = matrix[i][j];matrix[i][j] = matrix[j][i];matrix[j][i] = temp;}}// 2. 水平翻转矩阵for (int i = 0; i < n; i++) {for (int j = 0; j < n / 2; j++) {// 交换matrix[i][j]和matrix[i][n-j-1]int temp = matrix[i][j];matrix[i][j] = matrix[i][n - j - 1];matrix[i][n - j - 1] = temp;}}}
}

解题思路

旋转矩阵的核心思想是将每个元素移到它旋转后的新位置。为了达到顺时针旋转 90 度,可以通过两步操作来实现:

  1. 矩阵转置:首先对矩阵进行转置操作,即将矩阵的行和列交换。转置后的矩阵是将原矩阵的第 i 行变成第 i 列。
    举个例子: 原矩阵: [1, 2, 3] [4, 5, 6] [7, 8, 9] 转置后的矩阵: [1, 4, 7] [2, 5, 8] [3, 6, 9]

  2. 水平翻转:然后对转置后的矩阵进行水平翻转,即将每一行的元素顺序反转。这可以通过交换每一行的元素两端进行实现。

        水平翻转后的矩阵:    [7, 4, 1]    [8, 5, 2]    [9, 6, 3]    ```

通过这两步操作,即可完成矩阵的 90 度顺时针旋转。

复杂度分析

  • 时间复杂度O(n^2),其中 n 是矩阵的行数(或列数)。我们需要遍历矩阵的所有元素两次:一次用于转置操作,另一次用于水平翻转操作。

  • 空间复杂度O(1),我们仅使用常数空间进行交换操作。所有操作都是原地进行的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com