旋转图像

xiaoxiao2025-09-05  229

给定一个 n × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

示例 1:

给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], [9,6,3] ]

示例 2:

给定 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*3数组,仅仅需要两轮循环,每次循环都是将四个角上的元素进行两两交换,且存下最左端的元素,将四个元素依次进行顺时针交换。

class Solution { public void rotate(int[][] matrix) { if(matrix == null) return; int n = matrix.length; for(int i = 0; i < n/2; i++){ for(int j = i; j < n-1-i; j++){ int temp = matrix[i][j]; matrix[i][j] = matrix[n-1-j][i]; matrix[n-1-j][i] = matrix[n-1-i][n-1-j]; matrix[n-1-i][n-1-j] = matrix[j][n-1-i]; matrix[j][n-1-i] = temp; } } } }

转载请注明原文地址: https://www.6miu.com/read-5035803.html

最新回复(0)