Skip to content

Commit e3b5bde

Browse files
committed
add solution: rotate-image
1 parent e2661f1 commit e3b5bde

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

rotate-image/dusunax.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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+
'''

0 commit comments

Comments
 (0)