Вот проблема:длинное увеличение подпоследовательности [1 2 .. N] перестановка
Дана массив из N элементов (от 1 до N), отсортировать массив с одним ограничением: вы можете только переместить элемент для начала массива или конца массива. Сколько ходов вам нужно, по крайней мере, отсортировать массив?
Например: 2 5 3 4 1
=>1 2 5 3 4
=>1 2 3 4 5
, поэтому мне нужно как минимум 2 шага.
Я определяю одно решение: N - length of longest increasing subsequence
, в приведенном выше примере ответ если 5 - 3 = 2
.
Я знаю алгоритм O(NlogN)
, чтобы найти самую длинную возрастающую подпоследовательность (LIS). Но с элементами в массиве, находящемся в [1, N]
, интересно, есть ли решение для поиска LIS массива O(N)
?
Или есть решение O(N)
, чтобы решить начальную проблему, учитывая, что мы знаем, что элементы от 1 до N?
Вы хотите отсортировать массив или найти ЛИС? –
Я просто хочу знать наименьшее количество ходов, чтобы отсортировать массив. Я обнаружил, что, если длина LIS известна, проблема решена. Так что я спрашиваю это решение O (N), учитывая особые элементы. – justmscs