Вы должны написать программу или функцию, которая получает список различных целых чисел в качестве входных и выходных данных или возвращает количество вхождений входных чисел в следующей перевернутой числовой пирамиде.
Начиная с исходного списка на каждом шаге, мы создаем новый с максимальными значениями каждой пары соседних чисел (например, 5 1 2 6
становится 5 2 6
). Мы останавливаемся, когда в списке только один номер.
Полная пирамида для 5 1 2 6
IS
5 1 2 6
5 2 6
5 6
6
Результирующее количество вхождений есть 3 1 2 4
( 5 1 2 6
соответственно).
вход
- Список из одного или нескольких целых чисел без повторений. (например
1 5 1 6
, неверно.)
Выход
- Список целых положительных чисел.
i
Й элемент списка является числом вхожденийi
го входного числа в пирамидах.
Примеры
Вход => Выход
-5 => 1
8 4 => 2 1
5 9 7 => 1 4 1
1 2 3 9 8 6 7 => 1 2 3 16 3 1 2
6 4 2 1 3 5 => 6 4 2 1 3 5
5 2 9 1 6 0 => 2 1 12 1 4 1
120 5 -60 9 12 1 3 0 1200 => 8 2 1 3 16 1 4 1 9
68 61 92 58 19 84 75 71 46 69 25 56 78 10 89 => 2 1 39 2 1 27 6 5 1 6 1 2 14 1 12
Это код-гольф, поэтому выигрывает самый короткий вход.
Бонусная головоломка: вы можете решить проблему O(n*log n)
вовремя?