Tous les défis
Facile 0 résolus 0 % de réussite

Rendre un tableau non décroissant

Trouvez le nombre minimal d'incréments nécessaires pour que chaque valeur soit au moins égale à la précédente.

À 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

Exemple 1
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.

Exemple 2
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.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.