Ctrl K

Самая длинная растущая выборка

Средняя
Метеостанция записала в массив readings показания датчика в том порядке, в каком они поступали. Аналитик хочет вычеркнуть часть записей так, чтобы оставшиеся шли строго по возрастанию, и при этом сохранить как можно больше записей. Порядок оставшихся менять нельзя, а вот идти подряд в исходном массиве они не обязаны. Верните наибольшее количество записей, которое можно оставить. Решение за O(n²) несложное — попробуйте уложиться в O(n log n).
Пример 1
readings=[4, 12, 3, 6, 5, 9, 1] → 3

Можно выбрать 4, 6, 9 или 3, 5, 9 — длина 3. Четырёх строго растущих значений по порядку здесь нет.

Пример 2
readings=[-2, 0, 0, 1, -5, 2] → 4

-2, 0, 1, 2 — длина 4. Два нуля подряд взять нельзя: рост должен быть строгим.

Пример 3
readings=[5, 5, 5] → 1

Все значения равны, поэтому выбрать можно только одно.

Ограничения
  • 1 ≤ len(readings) ≤ 2500
  • -10⁴ ≤ readings[i] ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный общий кусок СредняяСлова, спрятанные в тексте СредняяСамая длинная цепочка с равным шагом СредняяБлижайшая банка нужного цвета СредняяДва отрезка с нужной суммой Средняя
загружаем Python…
Вход
readings=[4, 12, 3, 6, 5, 9, 1]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 136 тестов на сервере, включая скрытые.