48. 旋转图像 爱被打了一巴掌 2023-10-05 20:48 1阅读 0赞 给定一个 *n* × *n* 的二维矩阵 `matrix` 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在**[ 原地][Link 1]** 旋转图像,这意味着你需要直接修改输入的二维矩阵。**请不要** 使用另一个矩阵来旋转图像。 **示例 1:** ![c7662e6b012586fbfe13202dd2f70f26.png][] 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,4,1],[8,5,2],[9,6,3]] **示例 2:** ![a17fc03615a2d39f457a5831f2fff399.png][] 输入:matrix = [[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]] **示例 3:** 输入:matrix = [[1]] 输出:[[1]] **示例 4:** 输入:matrix = [[1,2],[3,4]] 输出:[[3,1],[4,2]] **提示:** * `matrix.length == n` * `matrix[i].length == n` * `1 <= n <= 20` * `-1000 <= matrix[i][j] <= 1000` public class Solution48 { public void rotate(int[][] matrix) { int row = matrix.length; // first find the transpose of the matrix. for (int i = 0; i < row; i++) { for (int j = i; j < row; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } // reverse each row for (int i = 0; i < row; i++) { for (int j = 0; j < row / 2; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[i][row - 1 - j]; matrix[i][row - 1 - j] = temp; } } } public static void main(String[] args) { Solution48 s = new Solution48(); int[][] matrix = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; s.rotate(matrix); } } [Link 1]: https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95 [c7662e6b012586fbfe13202dd2f70f26.png]: https://img-blog.csdnimg.cn/img_convert/c7662e6b012586fbfe13202dd2f70f26.png [a17fc03615a2d39f457a5831f2fff399.png]: https://img-blog.csdnimg.cn/img_convert/a17fc03615a2d39f457a5831f2fff399.png
还没有评论,来说两句吧...