文章目录
- 1. 题目链接
- 2. 题目大意
- 3. 示例
- 4. 解题思路
- 5. 参考代码
1. 题目链接
0048. 旋转图像 - 力扣
2. 题目大意
描述:给定一个 n×n 大小的二维矩阵(代表图像)matrix。
要求:将二维矩阵 matrix顺时针旋转 90°。
说明:
- 不能使用额外的数组空间。
- n=matrix.length==matrix[i].length。
- 1≤n≤20。
- −1000≤matrix[i][j]≤1000。
3. 示例
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]
输入: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]]
4. 解题思路
对于矩阵中的元素 matrix[row][col],在旋转后,它的新位置为 matrix_new[col][n−row−1]
遍历完成之后,再将 matrix_new 中的结果复制到原数组中即可
5. 参考代码
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
int[][] newMat = new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
newMat[j][n-i-1] = matrix[i][j];
}
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
matrix[i][j] = newMat[i][j];
}
}
}
}