Problem
Walk through the list once and track both the smallest and the largest value.
Implement min_and_max(numbers).
Input
numbers: A non-empty list of integers.
Output
Return [smallest, largest].
Einschränkungen
1 ≤ length ≤ 100,000
Beispiele
Eingabe:
numbers = [4, -2, 9, 0]
Erwartete Ausgabe:
expected = [-2, 9]
Eingabe:
std::vector<long long> numbers = {4, -2, 9, 0};
Erwartete Ausgabe:
std::vector<long long> expected = {-2, 9};
Eingabe:
long[] numbers = new long[] {4, -2, 9, 0};
Erwartete Ausgabe:
long[] expected = new long[] {-2, 9};
Erläuterung
The smallest value is -2 and the largest is 9: [-2, 9].
Eingabe:
numbers = [7]
Erwartete Ausgabe:
expected = [7, 7]
Eingabe:
std::vector<long long> numbers = {7};
Erwartete Ausgabe:
std::vector<long long> expected = {7, 7};
Eingabe:
long[] numbers = new long[] {7};
Erwartete Ausgabe:
long[] expected = new long[] {7, 7};
Erläuterung
With one value it is both the smallest and largest: [7, 7].
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Verfolge die kleinsten und größten Werte, während du die Liste einmal durchläufst.
Hinweis 2
Aktualisiere dein laufendes Minimum und Maximum, sobald du ein neues Extrem findest.
Hinweis 3
Da die Liste garantiert nicht leer ist, kannst du mit dem ersten Element starten.
Erwartete Komplexität
Zeit O(n), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.