classSolution: defrotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ m = len(matrix)
# 1. 首先进行水平翻转(上下对调) start, end = 0, m - 1 while start < end: matrix[start], matrix[end] = matrix[end], matrix[start] start += 1 end -= 1
# 2. 然后进行主对角线翻转(转置) for i inrange(m): # 只有 j < i 时才交换,防止重复交换变回原样 for j inrange(i): matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
defmain(): data = sys.stdin.read().strip().split() m, n = int(data[0]), int(data[1]) idx = 2 matrix = [] for i inrange(m): row = list(map(int, data[idx:idx+n])) matrix.append(row) idx += n
sol = Solution() result = sol.rotate(matrix) print(result)