|
题目描述:
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。
示例:
给定 matrix =
[
[1,2,3],
[4,5,6],
[7,8,9]
],
原地旋转输入矩阵,使其变为:
[
[7,4,1],
[8,5,2],
[9,6,3]
]
题目解析:
最直接的想法是先转置矩阵,然后翻转每一行。这个简单的方法已经能达到最优的时间复杂度O(N2)O(N^2)。
题目代码:
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
// transpose matrix
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
int tmp = matrix[j];
matrix[j] = matrix[j];
matrix[j] = tmp;
}
}
// reverse each row
for (int i = 0; i < n; i++) {
for (int j = 0; j < n / 2; j++) {
int tmp = matrix[j];
matrix[j] = matrix[n - j - 1];
matrix[n - j - 1] = tmp;
}
}
}
}
|
|