Problema
Mostra originale (inglese)Ogni mossa aumenta di 1 un valore dell'array. Rendi l'array non decrescente: ogni valore deve essere maggiore o uguale a quello immediatamente precedente. Non puoi diminuire i valori né riordinarli.
Implementa increasing_array(numbers).
Input
numbers: I valori nell'ordine originale.
Output
Restituisci il numero minimo totale di incrementi unitari.
Vincoli
1 ≤ lunghezza ≤ 200.000. Ogni valore è compreso tra 1 e 1.000.000.000. Usa un risultato con segno a 64 bit.
Esempi
Input:
numbers = [4, 1, 3]
Output atteso:
expected = 4
Input:
std::vector<long long> numbers = {4, 1, 3};
Output atteso:
long long expected = 4;
Input:
long[] numbers = new long[] {4, 1, 3};
Output atteso:
long expected = 4;
Spiegazione
Porta 1 a 4 con tre mosse e 3 a 4 con una mossa. Il risultato [4, 4, 4] richiede quattro mosse.
Input:
numbers = [1, 2, 2, 5]
Output atteso:
expected = 0
Input:
std::vector<long long> numbers = {1, 2, 2, 5};
Output atteso:
long long expected = 0;
Input:
long[] numbers = new long[] {1, 2, 2, 5};
Output atteso:
long expected = 0;
Spiegazione
Ogni valore è già almeno pari al valore precedente; valori uguali consecutivi sono ammessi.
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.