Поворот квадратной матрицы на 90° по часовой стрелке

Сначала транспонируйте квадратную матрицу, затем разверните каждую строку. Эта комбинация даёт поворот на 90° по часовой стрелке без дополнительной матрицы.

Короткий ответ

Что ответить на собеседовании

Сначала транспонируйте квадратную матрицу, затем разверните каждую строку. Эта комбинация даёт поворот на 90° по часовой стрелке без дополнительной матрицы.

Подробный разбор

Ответ с пояснениями

Условие

Дана двумерная квадратная матрица. Требуется выполнить её вращение на 90 градусов в направлении часовой стрелки, при этом используя только постоянный объём дополнительной памяти.

Ответ

Сначала транспонируйте квадратную матрицу, затем разверните каждую строку. Эта комбинация даёт поворот на 90° по часовой стрелке без дополнительной матрицы.

def rotate(matrix):
    n = len(matrix)
    if any(len(row) != n for row in matrix):
        raise ValueError('Матрица должна быть квадратной')
    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()

Каждый исходный элемент (i, j) переходит в (j, n − 1 − i). Время O(n²), дополнительная память O(1). Строки должны быть независимыми изменяемыми списками, а не несколькими ссылками на один и тот же список.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее