Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Gesamtzeit mit WhenAll

Finde heraus, wie lange ein Programm dauert, wenn jede Aufgabengruppe gemeinsam mit Task.WhenAll ausgeführt wird und die Gruppen nacheinander laufen.

Das lernst du

  • Verstehen, dass WhenAll auf den langsamsten Task wartet
  • Die Zeit nacheinander erwarteter Gruppen addieren
  • Leere Gruppen behandeln

Problem

await Task.WhenAll(tasks) startet eine Gruppe von Aufgaben zusammen und fährt fort, wenn die langsamste fertig ist. Ein Programm, das mehrere Gruppen nacheinander erwartet, benötigt daher die Summe der langsamsten Aufgabe jeder Gruppe.

Implementiere when_all_total_time(groups), wobei groups[i] die Laufzeiten der Aufgaben in Gruppe i enthält.

Input

groups: Die Gruppen, in dieser Reihenfolge erwartet. Eine leere Gruppe ist sofort fertig.

Output

Gib die Gesamtzeit zurück.

Einschränkungen

0 ≤ Anzahl der Gruppen ≤ 10,000

0 ≤ Tasks pro Gruppe ≤ 1,000; 0 ≤ Dauer ≤ 10^6

Beispiele

Beispiel 1
Eingabe:
groups = [
    [3, 1, 2],
    [5],
    [2, 2]
]

Erwartete Ausgabe:
expected = 10
Eingabe:
std::vector<std::vector<long long>> groups = {
    {3, 1, 2},
    {5},
    {2, 2}
};

Erwartete Ausgabe:
long long expected = 10;
Eingabe:
long[][] groups = new long[][] {
    new long[] {3, 1, 2},
    new long[] {5},
    new long[] {2, 2}
};

Erwartete Ausgabe:
long expected = 10;

Erläuterung

Die Gruppen dauern so lange wie ihre langsamste Aufgabe: 3 + 5 + 2 = 10.

Beispiel 2
Eingabe:
groups = [
    [],
    [4, 7]
]

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

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

Erwartete Ausgabe:
long expected = 7;

Erläuterung

Die leere Gruppe benötigt keine Zeit; die zweite Gruppe benötigt 7.

So gehst du vor

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

Hinweis 1

Eine Gruppe ist fertig, wenn ihr langsamster Task fertig ist.

Hinweis 2

Gruppen laufen nacheinander, also addieren sich ihre Zeiten.

Hinweis 3

Eine leere Gruppe kostet keine Zeit.

Erwartete Komplexität

Zeit O(Gesamtzahl der Tasks), zusätzlicher Speicher O(1)

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.