Problem: 48. 旋转图像
思路
找图形旋转方法
解题方法
先沿着“\”对角线旋转一百八十度,再反转数组的每一行
复杂度
-
时间复杂度:
O ( n 方 ) O(n方) O(n方) -
空间复杂度:
O ( 1 ) O(1) O(1)
Code
class Solution {
public void rotate(int[][] matrix) {
//以这个形状:”\“的轴旋转,具体实现将元素的行列号对调即可
for(int i = 0;i < matrix.length;i++){
for(int j = i;j < matrix[0].length;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
//再反转矩阵每一行
for(int[] row:matrix){
reverse(row);
}
}
void reverse(int[] row){
int i = 0,j = row.length - 1;
while(i < j){
int temp = row[i];
row[i] = row[j];
row[j] = temp;
i++;
j--;
}
}
}