Всем привет Есть задача про интервалы, примерно так формулируется Given a set

of n number of tasks, implement a task scheduler method,
minimumMachinesNumber, to run in O(n log⁡n) time that finds the minimum number of machines required to complete these n tasks.

Constraints:
* Task start time ≤ Task end time

Examples
Input
[[1, 7], [8, 13], [5, 6], [10, 14], [6, 7]]

Output
2

Input
[[2, 5], [2, 5], [2,5], [2, 5]]
Output
4

Подскажите, будет ли корректным, если я решу её через монотонную очередь? Грубо говоря вот так (сам я не очень уверен в корректности данного решения)
fun minimumMachinesNumber(tasks: Array<IntArray>): Int {
// Sort tasks by start time
tasks.sortBy { it[0] }

// Create a priority queue to store the end times of running tasks
val pq = PriorityQueue<Int>()

// Loop through tasks and add them to the priority queue
for (task in tasks) {
// If the priority queue is not empty and the earliest end time is less than or equal to the current task's start time,
// remove it from the priority queue since it has finished running
while (pq.isNotEmpty() && pq.peek() <= task[0]) {
pq.poll()
}
// Add the current task's end time to the priority queue
pq.offer(task[1])
}

// The size of the priority queue is the minimum number of machines required
return pq.size
}

1 ответов

30 просмотров
Αλeksandr- Автор вопроса

Вообще я не уверен, нужна ли тут приоритетная очередь, но в целом даже с учетом текущего решения, что вы имеете в виду под "смотреть размер очереди надо в цикле"?

Похожие вопросы

Обсуждают сегодня

Всем привет Есть достаточно базовая задача: Дан неориентированный граф. Требуется определить, есть ли в нем цикл, и, если есть, вывести его. Входные данные подаются в виде ма...
Αλeksandr
10
Привет всем. Подскажите, как можно данную задачу более менее эффективно решить? В столовой одного известного Завода вот-вот начнётся обед. На обеде есть три гарнира — макарош...
Vitaliy
6
всем привет. У меня есть неупорядоченный массив точек(в моем случае в трёхмерном пространстве). Есть критерий связанности точек: если евклидово расстояние между ними меньше за...
Павлик Ливаткин
31
Доброе утро. Такой вопрос: есть ли какие-то практически полезные меры вычислительной мощности (в смысле computational complexity) для реальных машин, с ограниченными ресурсам...
Yaroslav Schekin
15
Всем привет Пытаюсь решить следующую задачу: https://informatics.msk.ru/mod/statements/view.php?id=6992&chapterid=101#1 Строка S была записана много раз подряд, после чего из ...
Αλeksandr
10
Здравствуйте. Есть задача нужно найти наименшое число P где фактриал P делиться на 10^N. Ограничения 10^9. Знаю что нужно найти такой P в конце как минимум N нулей. Решение с ...
. Azmiddin
20
Друзья, практический вопрос надо счиать скользящую медиану в последовательности по заданному окну (длины N) тупой вариант - взять значения в окне, отсортировать, взять элеме...
Стас Выщепан
17
Должна-ли работать такая стратегия: Мы каждую секунду бросаем монетку - орел или решка. Если орел - покупаем акцию на все деньги, если у нас есть деньги, или продаем все акци...
George Polevoy
13
#pragma once #include <iostream> #include <vector> template <typename T, typename Comp = std::less<T>> class Heap { public: Heap() = default; Heap(const std::vector<T>&...
Степан
1
Как можно сжимать временные ряды в памяти? У меня есть исторические стоимости ценных бумаг. Данные для каждой минуты в истории OHLC (Open, High, Low, Close). Соответственно, O...
George Polevoy
10
Карта сайта