Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Ein Array nicht abnehmend machen

Finde die minimale Anzahl an Erhöhungen, sodass jeder Wert mindestens so groß ist wie der vorherige.

Ein Zug erhöht einen Wert im Array um 1. Mache das Array nicht abnehmend: Jeder Wert muss größer oder gleich dem unmittelbar davorstehenden Wert sein. Du darfst keine Werte verringern oder die Reihenfolge ändern.

Implementiere increasing_array(numbers).

Eingabe

numbers: Die Werte in ihrer ursprünglichen Reihenfolge.

Ausgabe

Gib die minimale Gesamtanzahl an Erhöhungen um eins zurück.

Einschränkungen

1 ≤ Länge ≤ 200.000. Jeder Wert liegt zwischen 1 und 1.000.000.000. Verwende ein vorzeichenbehaftetes 64-Bit-Ergebnis.

Beispiele

Beispiel 1
Eingabe:
numbers = [4, 1, 3]

Erwartete Ausgabe:
expected = 4
Eingabe:
std::vector<long long> numbers = {4, 1, 3};

Erwartete Ausgabe:
long long expected = 4;
Eingabe:
long[] numbers = new long[] {4, 1, 3};

Erwartete Ausgabe:
long expected = 4;

Erläuterung

Erhöhe 1 auf 4 mit drei Zügen und 3 auf 4 mit einem Zug. Das Ergebnis [4, 4, 4] benötigt insgesamt vier Züge.

Beispiel 2
Eingabe:
numbers = [1, 2, 2, 5]

Erwartete Ausgabe:
expected = 0
Eingabe:
std::vector<long long> numbers = {1, 2, 2, 5};

Erwartete Ausgabe:
long long expected = 0;
Eingabe:
long[] numbers = new long[] {1, 2, 2, 5};

Erwartete Ausgabe:
long expected = 0;

Erläuterung

Jeder Wert ist bereits mindestens so groß wie der vorherige; gleiche Nachbarn sind erlaubt.

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.