Ctrl K

Прибыль за две сделки

Сложная
Вы знаете курс монеты на ближайшие дни: rates[i] — её цена в день i. Сделка — это покупка монеты и её последующая продажа. На руках одновременно может быть не больше одной монеты, то есть купить новую можно только после продажи предыдущей (в тот же день — можно). Разрешено совершить не больше двух сделок. Верните наибольшую суммарную прибыль; если заработать нельзя, верните 0.
Пример 1
rates=[4, 9, 2, 2, 7, 1, 6] → 10

Купить за 4, продать за 9 (+5); купить за 2, продать за 7 (+5). Итого 10. Третья сделка (1 → 6) уже не разрешена.

Пример 2
rates=[1, 3, 5, 8] → 7

Одна сделка 1 → 8 даёт 7 — больше, чем любые две.

Пример 3
rates=[9, 6, 6, 2] → 0

Цена только падает, лучше ничего не делать: 0.

Ограничения
  • 1 ≤ len(rates) ≤ 10⁵
  • 0 ≤ rates[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру СложнаяПрибыль при ограниченном числе сделок Сложная
загружаем Python…
Вход
rates=[4, 9, 2, 2, 7, 1, 6]
Ожидается
10

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