KZ
item
Негізгі бет
Трендинг
Журнал
Ұнаған бейнелер
Ең жақсы KZitem
Фильм және анимация
Автокөліктер мен көлік құралдары
Музыка
Үй жануарлары мен аңдар
Спорт
Ойындар
Комедия
Ойын-сауық
Тәжірибелік нұсқаулар және стиль
Ғылым және технология
Кіру
Тіркелу
Кіру
Тіркелу
Негізгі бет
Трендинг
Журнал
Ұнаған бейнелер
Ең жақсы KZitem
Фильм және анимация
Автокөліктер мен көлік құралдары
Музыка
Үй жануарлары мен аңдар
Спорт
Ойындар
Комедия
Ойын-сауық
Тәжірибелік нұсқаулар және стиль
Ғылым және технология
Негізгі бет
LeetCode - Task Scheduler - C++
Күн бұрын
LeetCode - Task Scheduler - C++
Рет қаралды
38
Lansicus
1
1
Let's discuss ⬇️
Жүктеу
Пікірлер: 1
@lansicus
17 күн бұрын
class Solution { private: struct Comparator { bool operator() (pair &a, pair &b) { return a.second < b.second; } }; public: int leastInterval(vector& tasks, int n) { unordered_map freq; for (auto &task : tasks) { freq[task]++; } priority_queue maxHeap; for (auto &kv : freq) { maxHeap.push({ kv.first, kv.second }); } // task, freq. remaining, interval ready queue q; int intervals = 0; while (!maxHeap.empty() || !q.empty()) { // put tasks finished with cooldown back in heap if (!q.empty()) { auto [task, remaining, interval] = q.front(); if (interval == intervals) { maxHeap.push({ task, remaining }); q.pop(); } } if (maxHeap.empty()) { intervals++; continue; } // do the next task auto [task, remaining] = maxHeap.top(); maxHeap.pop(); remaining--; if (remaining > 0 && n > 0) { q.push(make_tuple(task, remaining, intervals + n + 1)); } else if (remaining > 0) { maxHeap.push({ task, remaining }); } intervals++; } return intervals; } };
Пікірлер: 1