Todos os desafios
Fácil 0 resolvidos 0% de aceitação

Torne um Array Não Decrescente

Encontre o menor número de incrementos necessários para que cada valor seja pelo menos igual ao anterior.

Um movimento aumenta um valor do array em 1. Torne o array não decrescente: cada valor deve ser maior ou igual ao valor imediatamente anterior. Não é permitido diminuir valores nem reordená-los.

Implemente increasing_array(numbers).

Entrada

numbers: Os valores na ordem original.

Saída

Retorne o número mínimo total de incrementos unitários.

Restrições

1 ≤ comprimento ≤ 200.000. Cada valor está entre 1 e 1.000.000.000. Use um resultado com sinal de 64 bits.

Exemplos

Exemplo 1
Entrada:
numbers = [4, 1, 3]

Saída esperada:
expected = 4
Entrada:
std::vector<long long> numbers = {4, 1, 3};

Saída esperada:
long long expected = 4;
Entrada:
long[] numbers = new long[] {4, 1, 3};

Saída esperada:
long expected = 4;

Explicação

Aumente o 1 para 4 usando três movimentos e o 3 para 4 usando um movimento. O resultado [4, 4, 4] usa quatro movimentos.

Exemplo 2
Entrada:
numbers = [1, 2, 2, 5]

Saída esperada:
expected = 0
Entrada:
std::vector<long long> numbers = {1, 2, 2, 5};

Saída esperada:
long long expected = 0;
Entrada:
long[] numbers = new long[] {1, 2, 2, 5};

Saída esperada:
long expected = 0;

Explicação

Todos os valores já são pelo menos iguais ao valor anterior; vizinhos iguais são permitidos.

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.