Você deve escrever um programa ou função que receba uma lista de números inteiros distintos como entrada e saída ou retorne o número de ocorrências dos números de entrada na seguinte pirâmide de número invertida.
A partir da lista original em cada etapa, criamos uma nova com os valores máximos de cada par de números adjacentes (por exemplo, 5 1 2 6
torna-se 5 2 6
). Paramos quando há apenas um número na lista.
A pirâmide completa para 5 1 2 6
é
5 1 2 6
5 2 6
5 6
6
O número resultante de ocorrências é 3 1 2 4
(para 5 1 2 6
respectivamente).
Entrada
- Uma lista de um ou mais números inteiros sem repetição. (por exemplo,
1 5 1 6
é inválido.)
Resultado
- Uma lista de números inteiros positivos. O
i
elemento th da lista é o número de ocorrências doi
número th de entrada na pirâmide.
Exemplos
Entrada => Saída
-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
Isso é código-golfe, portanto a entrada mais curta vence.
Quebra-cabeça bônus: você pode resolver o problema a O(n*log n)
tempo?