48. Rotate Image
class Solution {
public void rotate(int[][] matrix) {
// set n = matrix.length;
// after rotate
// matrix[i][j]=>matrix[j][n-i-1]
// layer count from 0 to lastLayer-1;
int lastLayer = matrix.length/2;
// index from matrix[layer][layer] to matrix[layer][n-1-layer];
for(int i =0; i< lastLayer; i++){
// from[i, matrix.length-1-i)
for(int j = i; j<matrix.length-1-i; j++){
swap(matrix, i, j);
}
}
}
private void swap(int[][] matrix, int i, int j){
//matrix[i][j]=>matrix[j][n-i-1];
//[i][j] [0][0] 1
//[j][n-i-1]; [0][1]; 2
//[n-i-1][n-j-1] [1][1] 4
//[n-j-1][i]; [1][0] 3
int n = matrix.length;
int memo = matrix[i][j];
matrix[i][j]= matrix[n-j-1][i];
matrix[n-j-1][i] = matrix[n-i-1][n-j-1];
matrix[n-i-1][n-j-1] = matrix[j][n-i-1];
matrix[j][n-i-1] = memo;
}
}
Last updated
Was this helpful?