Rotate Image
Problem: Rotate Image
To do in-place rotation, we simply calculate the relationship between indexes of exchanging elements.
Code in Python:
class Solution(object):
def rotate(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: void Do not return anything, modify matrix in-place instead.
"""
n = len(matrix)
for i in xrange(n/2):
for j in xrange(i, n-i-1):
temp = matrix[i][j]
matrix[i][j] = matrix[n-j-1][i]
matrix[n-j-1][i] = matrix[n-1-i][n-j-1]
matrix[n-1-i][n-1-j] = matrix[j][n-1-i]
matrix[j][n-1-i] = temp
Code in Java:
public class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length;
for (int level = 0; level < n/2; level++) {
for (int i = level; i < n-level-1; i++) {
int x1 = level, y1 = i;
int x2 = i, y2 = n-level-1;
int x3 = n-level-1, y3 = n-i-1;
int x4 = n-i-1, y4 = level;
int val1 = matrix[x4][y4], val2 = matrix[x1][y1], val3 = matrix[x2][y2], val4 = matrix[x3][y3];
matrix[x1][y1] = val1;
matrix[x2][y2] = val2;
matrix[x3][y3] = val3;
matrix[x4][y4] = val4;
}
}
}
}