题目描述
给定一个 n × n 的二维矩阵 matrix 表示图像。顺时针旋转图像 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、13、2、5]、[14、3、4、1]、[12、6、8、9]、[16、7、10、11]
提示:
- n == matrix.length == matrix[i].length
- 1 <= n <= 20
- -1000 <= matrix[i][j] <= 1000
思路
旋转90°等于先,再。
代码
public void rotate(int[][] matrix) {
int n = matrix.length; // 转置 for(int i = 0; i < n; i ) {
for(int j = 0; j < i; j ) {
int t = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = t; } } // 镜像对称 for(int i = 0; i < n; i ) {
for(int j = 0; j < n/2; j ) {
int t = matrix[i][j]; matrix[i][j] = matrix[i][n-1-j]; matrix[i][n-1-j] = t;
}
}
}