Powinieneś napisać program lub funkcję, która otrzymuje listę różnych liczb całkowitych jako dane wejściowe i wyjściowe lub zwraca liczbę wystąpień liczb wejściowych w poniższej piramidzie liczb odwróconych.
Zaczynając od oryginalnej listy w każdym kroku, tworzymy nową z maksymalnymi wartościami każdej pary sąsiednich liczb (np. 5 1 2 6Staje się 5 2 6). Zatrzymujemy się, gdy na liście jest tylko jeden numer.
Pełna piramida dla 5 1 2 6jest
5 1 2 6
5 2 6
5 6
6
Wynikowa liczba wystąpień to 3 1 2 4( 5 1 2 6odpowiednio).
Wejście
- Lista jednej lub więcej liczb całkowitych bez powtórzeń. (np.
1 5 1 6jest nieprawidłowy.)
Wynik
- Lista liczb całkowitych dodatnich. Ten
ielement listy to liczba wystąpieńith liczby wejściowej w piramidzie.
Przykłady
Dane wejściowe => Dane wyjściowe
-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
To jest golf golfowy, więc wygrywa najkrótszy wpis.
Bonusowa łamigłówka: czy potrafisz rozwiązać problem na O(n*log n)czas?