Учитывая несортированный массив положительных целых чисел, найдите длину самого длинного подмассива, элементы которого при сортировке непрерывны. Можете ли вы придумать решение O (n)?
Пример:
{10, 5, 3, 1, 4, 2, 8, 7}, ответ 5.
{4, 5, 1, 5, 7, 6, 8, 4, 1}, ответ 5.
В первом примере подматрица {5, 3, 1, 4, 2} при сортировке может образовывать непрерывную последовательность 1,2,3,4,5, которые являются самыми длинными.
Для второго примера подматрица {5, 7, 6, 8, 4} является субаром результата.
Я могу думать о методе, который для каждого подмассива, проверяет, равен ли (максимум - минимум + 1) длину этого подмассива, если это правда, то это непрерывный подмассива. Возьмите самый длинный из всех. Но это O (n ^ 2) и не может иметь дело с дубликатами.
Может ли кто-нибудь дать лучший метод?