Einfach 0 gelöst 0% Erfolgsquote

WhenAll Total Time

Find how long a program takes when each group of tasks runs together with Task.WhenAll and groups run one after another.

Das lernst du

  • Understand that WhenAll waits for the slowest task
  • Add up the time of groups awaited in order
  • Handle empty groups

Problem

Übersetzung anzeigen

await Task.WhenAll(tasks) starts a group of tasks together and continues when the slowest one finishes. A program that awaits several groups one after another therefore takes the sum of the slowest task of each group.

Implement when_all_total_time(groups), where groups[i] lists the durations of the tasks in group i.

Input

groups: The groups, awaited in order. An empty group finishes immediately.

Output

Return the total time.

Einschränkungen

0 ≤ number of groups ≤ 10,000

0 ≤ tasks per group ≤ 1,000; 0 ≤ duration ≤ 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

The groups take as long as their slowest task: 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

The empty group takes no time; the second group takes 7.

So gehst du vor

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

Hinweis 1

A group finishes when its slowest task finishes.

Hinweis 2

Groups run one after another, so their times add up.

Hinweis 3

An empty group adds no time.

Erwartete Komplexität

O(total number of tasks) 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.