← Назад к вопросам
Поворот матрицы на 90 градусов
2.3 Middle🔥 111 комментариев
#Теория тестирования
Условие
Напишите функцию, которая поворачивает квадратную матрицу на 90 градусов по часовой стрелке.
Пример
Вход: [[1, 2], [3, 4]] Выход: [[3, 1], [4, 2]]
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Понимание задачи
Повернуть квадратную матрицу на 90 градусов по часовой стрелке.
Алгоритм: Транспонирование + Разворот
Оптимальный подход использует два этапа:
- Транспонирование — строки становятся столбцами
- Разворот каждой строки — каждая строка разворачивается
def rotate_matrix(matrix):
n = len(matrix)
# Транспонирование
for i in range(n):
for j in range(i + 1, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# Разворот каждой строки
for row in matrix:
row.reverse()
return matrix
Пример выполнения
Матрица: [[1, 2], [3, 4]]
Шаг 1 - Транспонирование: [[1, 3], [2, 4]] Шаг 2 - Разворот строк: [[3, 1], [4, 2]]
Сложность
- Временная: O(n²) — посещаем каждый элемент дважды
- Пространственная: O(1) — модифицируем матрицу на месте
Тестирование
# Тест 1: 2x2 матрица
m = [[1, 2], [3, 4]]
rotate_matrix(m)
assert m == [[3, 1], [4, 2]]
# Тест 2: 3x3 матрица
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
rotate_matrix(m)
assert m == [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
# Тест 3: 1x1 матрица
m = [[1]]
rotate_matrix(m)
assert m == [[1]]
Выводы
- Два этапа алгоритма просты для понимания
- O(n²) время и O(1) дополнительная память
- Работает для матриц любого размера
- Нужно тестировать на матрицах с чётными и нечётными размерами