Программа Javascript для поворота матрицы на 180 градусов

Опубликовано: 2 Сентября, 2022

Задача состоит в том, чтобы, имея квадратную матрицу, повернуть ее на 180 градусов против часовой стрелки, не занимая дополнительного пространства.

Примеры :

Input :  1  2  3
         4  5  6
         7  8  9
Output : 9 8 7 
         6 5 4 
         3 2 1

Input :  1 2 3 4 
         5 6 7 8 
         9 0 1 2 
         3 4 5 6 
Output : 6 5 4 3 
         2 1 0 9 
         8 7 6 5 
         4 3 2 1

Метод: 1 (печатает только повернутую матрицу)
Решение этой проблемы состоит в том, что для поворота матрицы на 180 градусов мы можем легко выполнить этот шаг.

Matrix =  a00 a01 a02
          a10 a11 a12
          a20 a21 a22

when we rotate it by 90 degree
then matrix is
Matrix = a02 a12 a22
         a01 a11 a21
         a00 a10 a20
  
when we rotate it by again 90 
degree then matrix is 
Matrix = a22 a21 a20
         a12 a11 a10
         a02 a01 a00 

Из приведенного выше рисунка мы получаем, что если просто повернуть матрицу на 180 градусов, нам придется печатать данную матрицу в обратном порядке.

Выход :

 9 8 7 
 6 5 4 
 3 2 1  

Временная сложность: O(N*N)
Вспомогательное пространство: O(1)

Метод: 2 (вращение на месте)
Есть четыре шага:
1- Найдите транспонированную матрицу.
2- Обратные столбцы транспонирования.
3- Найдите транспонированную матрицу.
4- Обратные столбцы транспонирования

Let the given matrix be
1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16

First we find transpose.
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16

Then we reverse elements of every column.
4 8 12 16
3 7 11 15
2 6 10 14
1 5  9 13

then transpose again 
4 3 2 1 
8 7 6 5 
12 11 10 9
16 15 14 13 

Then we reverse elements of every column again
16 15 14 13 
12 11 10 9 
8 7 6 5 
4 3 2 1

Выход :

 16 15 14 13 
 12 11 10 9 
 8 7 6 5 
 4 3 2 1

Временная сложность: O(R*C)
Вспомогательное пространство: O(1)
В приведенном выше коде транспонирование матрицы должно быть найдено дважды, а также столбцы должны быть перевернуты дважды.
Таким образом, у нас может быть лучшее решение.

Способ : 3 (переключение позиций)
Здесь мы меняем значения в соответствующих позициях.

Выход :

25 24 23 22 21 
20 19 18 17 16 
15 14 13 12 11 
10 9 8 7 6 
5 4 3 2 1 

Временная сложность: O(R*C)
Вспомогательное пространство: O(1)

Пожалуйста, обратитесь к полной статье о повороте матрицы на 180 градусов для получения более подробной информации!