Einfach 0 gelöst 0% Erfolgsquote

Second Largest Value

Find the second largest distinct value.

Das lernst du

  • Track the top two values in one pass
  • Ignore duplicates of the maximum
  • Handle lists without a second value

Problem

Übersetzung anzeigen

Return the second largest distinct value in the list. Repeated values count once.

Implement second_largest(numbers).

Input

numbers: A list of non-negative integers.

Output

Return the second largest distinct value, or -1 if it doesn't exist.

Einschränkungen

0 ≤ length ≤ 100,000; 0 ≤ each value ≤ 10⁹

Beispiele

Beispiel 1
Eingabe:
numbers = [4, 9, 7, 9]

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

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

Erwartete Ausgabe:
long expected = 7;

Erläuterung

Distinct values are 9, 7, 4; the second largest is 7.

Beispiel 2
Eingabe:
numbers = [5, 5]

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

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

Erwartete Ausgabe:
long expected = -1;

Erläuterung

Only one distinct value exists, so the answer is -1.

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

You need the largest and the next different value, not just the top two positions.

Hinweis 2

Track two distinct maxima as you scan, updating them when a new value fits above or between them.

Hinweis 3

If no second distinct value ever appears, return the special fallback value.

Erwartete Komplexität

O(n) time, O(1) extra space

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.