समस्या
await Task.WhenAll(tasks) कार्यों के एक समूह को एक साथ शुरू करता है और सबसे धीमे के पूरा होने पर आगे बढ़ता है। इसलिए ऐसा प्रोग्राम जो कई समूहों को एक-एक करके await करता है, हर समूह के सबसे धीमे task के समयों के योग के बराबर समय लेता है।
when_all_total_time(groups) को implement करें, जहाँ groups[i] group i में tasks की durations की सूची है।
Input
groups: समूह, जिन्हें क्रम से awaited किया गया है। एक खाली group तुरंत पूरा हो जाता है।
Output
कुल समय return करें।
सीमाएँ
0 ≤ समूहों की संख्या ≤ 10,000
0 ≤ हर समूह में टास्क ≤ 1,000; 0 ≤ अवधि ≤ 10^6
उदाहरण
इनपुट:
groups = [
[3, 1, 2],
[5],
[2, 2]
]
अपेक्षित आउटपुट:
expected = 10
इनपुट:
std::vector<std::vector<long long>> groups = {
{3, 1, 2},
{5},
{2, 2}
};
अपेक्षित आउटपुट:
long long expected = 10;
इनपुट:
long[][] groups = new long[][] {
new long[] {3, 1, 2},
new long[] {5},
new long[] {2, 2}
};
अपेक्षित आउटपुट:
long expected = 10;
व्याख्या
समूहों को उतना समय लगता है जितना उनके सबसे धीमे task को: 3 + 5 + 2 = 10.
इनपुट:
groups = [
[],
[4, 7]
]
अपेक्षित आउटपुट:
expected = 7
इनपुट:
std::vector<std::vector<long long>> groups = {
{},
{4, 7}
};
अपेक्षित आउटपुट:
long long expected = 7;
इनपुट:
long[][] groups = new long[][] {
new long[] {},
new long[] {4, 7}
};
अपेक्षित आउटपुट:
long expected = 7;
व्याख्या
खाली समूह को कोई समय नहीं लगता; दूसरा समूह 7 लेता है.
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
समूह तब खत्म होता है जब उसका सबसे धीमा टास्क खत्म होता है।
संकेत 2
समूह एक के बाद एक चलते हैं, इसलिए उनका समय जुड़ता है।
संकेत 3
खाली समूह कोई समय नहीं जोड़ता।
अपेक्षित जटिलता
समय O(कुल टास्क की संख्या), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।