File tree Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Expand file tree Collapse file tree 1 file changed +77
-0
lines changed Original file line number Diff line number Diff line change
1
+ '''
2
+ # 48. Rotate Image
3
+
4
+ rotate 2d matrix 90 degree in place.
5
+ 👉 transpose matrix and reverse each row.
6
+
7
+ - original matrix
8
+ 1 2 3
9
+ 4 5 6
10
+ 7 8 9
11
+
12
+ - transpose matrix (swap i, j) (flip diagonally)
13
+ 1 4 7
14
+ 2 5 8
15
+ 3 6 9
16
+
17
+ - reverse each row (horizontal flip)
18
+ 7 4 1
19
+ 8 5 2
20
+ 9 6 3
21
+ '''
22
+ class Solution :
23
+ '''
24
+ TC: O(n^2)
25
+ SC: O(1)
26
+ '''
27
+ def rotate (self , matrix : List [List [int ]]) -> None :
28
+ n = len (matrix )
29
+
30
+ for i in range (n ):
31
+ for j in range (i , n ):
32
+ matrix [i ][j ], matrix [j ][i ] = matrix [j ][i ], matrix [i ][j ]
33
+
34
+ for i in range (n ):
35
+ matrix [i ].reverse ()
36
+
37
+ '''
38
+ # 💡 other rotate in-place examples
39
+
40
+ ## rotate 180 degree
41
+
42
+ ### solution A. reverse each column (vertical flip) & reverse each row (horizontal flip)
43
+
44
+ ```python
45
+ def rotate180(matrix: List[List[int]]) -> None:
46
+ n = len(matrix)
47
+ matrix.reverse()
48
+
49
+ for i in range(n):
50
+ matrix[i].reverse()
51
+ ```
52
+
53
+ ### solution B. (after transpose, reverse each row (horizontal flip)) * 2.
54
+
55
+ 90 degree * 2 = 180 degree
56
+
57
+ ```python
58
+ def rotate180(matrix: List[List[int]]) -> None:
59
+ rotate90(matrix)
60
+ rotate90(matrix)
61
+ ```
62
+
63
+ ## rotate -90 degree
64
+
65
+ after transpose, reverse each column (vertical flip)
66
+
67
+ ```python
68
+ def rotate90CCW(matrix):
69
+ n = len(matrix)
70
+
71
+ for i in range(n):
72
+ for j in range(i, n):
73
+ matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
74
+
75
+ matrix.reverse()
76
+ ```
77
+ '''
You can’t perform that action at this time.
0 commit comments