UniLecs #150. Double Reverse

UniLecs #150. Double Reverse

UniLecs

Задача: дан массив целых чисел. Необходимо сначала сделать "реверс" от элемента с индексов ind_1 до элемента с индексом ind_2, затем - от элемента с индексом ind_3 до элемента с индексом ind_4.

Входные данные: arr - массив целых чисел, где размер массива от 1 до 10^3. 

ind_1 < ind_2, ind_3 < ind_4, ind_1, ind_2, ind_3, ind_4 от 1 до 10^3.

Вывод: массив после преобразований.

Пример: arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

ind_1 = 1, ind_2 = 4

ind_3 = 5, ind_4 = 8

Answer: arr = [1, 5, 4, 3, 2, 9, 8, 7, 6]

Условие: запрещено использовать доп.O(n) памяти, использовать только исходный массив для преобразования.

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

Реализация:

C#

https://gist.github.com/unilecs/aada6fc4fd6a3cdcf92f85873b68d0b3

Test: https://dotnetfiddle.net/m99xPm

Report Page