Problème
Afficher l’original (anglais)À chaque opération, vous pouvez augmenter une valeur du tableau de 1. Rendez le tableau non décroissant : chaque valeur doit être supérieure ou égale à celle qui la précède immédiatement. Vous ne pouvez ni diminuer les valeurs, ni les réordonner.
Implémentez increasing_array(numbers).
Entrée
numbers : Les valeurs dans leur ordre d'origine.
Sortie
Retournez le nombre total minimal d'incréments unitaires nécessaires.
Contraintes
1 ≤ longueur ≤ 200 000. Chaque valeur est comprise entre 1 et 1 000 000 000. Utilisez un résultat signé sur 64 bits.
Exemples
Entrée :
numbers = [4, 1, 3]
Sortie attendue :
expected = 4
Entrée :
std::vector<long long> numbers = {4, 1, 3};
Sortie attendue :
long long expected = 4;
Entrée :
long[] numbers = new long[] {4, 1, 3};
Sortie attendue :
long expected = 4;
Explication
Augmentez 1 à 4 en trois opérations et 3 à 4 en une opération. Le résultat [4, 4, 4] utilise quatre opérations.
Entrée :
numbers = [1, 2, 2, 5]
Sortie attendue :
expected = 0
Entrée :
std::vector<long long> numbers = {1, 2, 2, 5};
Sortie attendue :
long long expected = 0;
Entrée :
long[] numbers = new long[] {1, 2, 2, 5};
Sortie attendue :
long expected = 0;
Explication
Chaque valeur est déjà au moins égale à la précédente ; des voisins égaux sont autorisés.
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.