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

Make an Array Nondecreasing

Find the fewest increments needed so each value is at least the previous one.

One move increases one array value by 1. Make the array nondecreasing: each value must be greater than or equal to the one immediately before it. You may not decrease values or reorder them.

Implement increasing_array(numbers).

Input

numbers: The values in their original order.

Output

Return the minimum total number of unit increments.

Contraintes

1 ≤ length ≤ 200,000. Each value is between 1 and 1,000,000,000. Use a signed 64-bit result.

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

Raise 1 to 4 using three moves and 3 to 4 using one move. The result [4, 4, 4] uses four moves.

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

Every value is already at least the preceding value; equal neighbors are allowed.

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.