Ctrl K

Лесенки из нулей, единиц и двоек

Сложная
Дан массив values, в котором встречаются только числа 0, 1 и 2. Назовём лесенкой последовательность, в которой сначала идёт хотя бы один ноль, затем хотя бы одна единица, затем хотя бы одна двойка — и больше ничего. Например, [0, 1, 2] и [0, 0, 1, 2, 2] — лесенки, а [0, 2] и [0, 1, 2, 1] — нет. Подпоследовательность получается вычёркиванием из массива некоторых элементов без изменения порядка остальных. Две подпоследовательности различны, если различаются наборы выбранных индексов. Верните количество подпоследовательностей values, которые являются лесенками, по модулю 10⁹ + 7.
Пример 1
values=[0, 0, 1, 2] → 3

Единица и двойка берутся обязательно, а из нулей можно взять первый, второй или оба: [0, 1, 2], [0, 1, 2] и [0, 0, 1, 2]. Ответ 3.

Пример 2
values=[1, 2, 0] → 0

Единственный ноль стоит после единицы и двойки, лесенку не собрать — ответ 0.

Пример 3
values=[0, 1, 1, 2, 2] → 9

Из двух единиц можно взять непустой набор тремя способами, из двух двоек — тоже тремя: 3 · 3 = 9.

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

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