"""
* clockwise rotate
* first reverse up to down, then swap the symmetry
* 1 2 3 7 8 9 7 4 1
* 4 5 6 => 4 5 6 => 8 5 2
* 7 8 9 1 2 3 9 6 3
*/"""
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
# time O(N^2) space O(1)
matrix.reverse()
for i in range(len(matrix)):
for j in range(i):
matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]
"""
solution2: instead of using reverse(), manual reverse
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
# time O(N^2) space O(1)
n = len(matrix)
# step1: transpose
for i in range(n):
for j in range(i):
matrix[i][j],matrix[j][i]=matrix[j][i],matrix[i][j]
# step2: each row, reverse
for row in matrix:
for j in range(n//2):
row[j],row[~j] = row[~j],row[j]