-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathRotateMatrixBy90DegreesClockwise.py
41 lines (32 loc) · 1.14 KB
/
RotateMatrixBy90DegreesClockwise.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""
@author Anirudh Sharma
You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).
You have to rotate the image in-place, which means you have to modify the input 2D matrix directly.
DO NOT allocate another 2D matrix and do the rotation.
Constraints:
matrix.length == n
matrix[i].length == n
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000
"""
def rotate(matrix):
# Special cases
if matrix is None or len(matrix) == 0:
return matrix
# Order of the matrix
N = len(matrix)
# Traverse the matrix
for i in range(N // 2):
for j in range(i, N - i- 1):
# SWap elements of each cycle in clockwise order
temp = matrix[i][j]
matrix[i][j] = matrix[N - 1 - j][i]
matrix[N - 1 - j][i] = matrix[N - 1 - i][N - 1 - j]
matrix[N - 1 - i][N - 1 - j] = matrix[j][N - 1 - i]
matrix[j][N - 1 - i] = temp
return matrix
if __name__ == "__main__":
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(rotate(matrix))
matrix = [[5, 1, 9, 11], [2, 4, 8, 10], [13, 3, 6, 7], [15, 14, 12, 16]]
print(rotate(matrix))