Конференц-залы III (LeetCode)Python

Программы на Python
Ответить
Anonymous
 Конференц-залы III (LeetCode)

Сообщение Anonymous »

Я пытался решить конференц -залы III на LeetCode, и мое решение проходит только 60/80. не Есть n комнат
пронумерованы от 0 до N - 1. означает, что встреча будет проведена во время промежуточного интервала времени
[Starti, Endi). Все значения starti
уникальны. < /P>
Встречи выделяются в комнаты следующим образом: < /p>
Каждое собрание будет проходить в неиспользованная комната с самым низким номером
. Если нет доступных номеров, встреча будет отложена
до тех пор, пока комната не станет свободной. Задержка собрания должна иметь такую ​​же
продолжительность, что и оригинальное собрание. Когда комната становится неиспользованной, встречи
с более ранним оригинальным временем начала должны быть предоставлены комнатой.
вернуть номер комнаты, в которой было больше всего встречи. Если есть
несколько комнат, верните комнату с самым низким числом. Включая и не включая b. < /p>
< /blockquote>
Мое решение: < /p>

Код: Выделить всё

class Solution:
def mostBooked(self, n: int, meetings: List\[List\[int\]\]) -\> int:
meetings.sort()

available = [i for i in range(n)]
used = []
count = [0] * n

for start, end in meetings:
while used and start >= used[0]:
_, room = heapq.heappop(used)
heapq.heappush(available, room)
if not available:
prevEnd, room = heapq.heappop(used)
heapq.heappush(used, (prevEnd + (end - start), room))
else:
room = heapq.heappop(available)
heapq.heappush(used, (end, room))

return count.index(max(count))
GPT привел мне причину, по которой я не прошел тест:

Ваш код не проходит тест. потому что оно не соответствует
ожидаемой политике планирования задачи. В вашем коде, если самая ранняя
комната завершения (корень кучи) все еще занята, вы немедленно открываете
новую комнату (пока вы не использовали все n). Достигнув n комнат,
вы повторно используете комнату, которая была закончена раньше. Этот подход логически
согласуется с определенной политикой, но тесты задачи предполагают
различное назначение встреч.
Типичные решения освобождают комнаты, как только они заканчиваются, и назначьте
следующее собрание в доступной комнате с наименьшим индексом. Это приводит к
различному итоговому «счетчику использования» для каждой комнаты, поэтому ваш ответ на вопрос «Наиболее используемая
комната» не соответствует ожиданиям теста. Тестовый пример
специально разработан для того, чтобы потерпеть неудачу, если вы продолжите создавать новые комнаты вместо того, чтобы
повторно использовать комнату, которая на самом деле бесплатна.

Я до сих пор не могу до конца понять, почему мой код не работает. Я понимаю, что проблема в том, как я обрабатываю, какие комнаты используются, а какие свободны. Однако я чувствую, что мое решение соответствует инструкциям (и мне не кажется, что инструкции достаточно конкретны). Думаю, я пытаюсь спросить, в чем заключается эта проблема, и нужно ли мне просто запомнить ее? Просто выкладываю это для размышлений.


Подробнее здесь: https://stackoverflow.com/questions/793 ... i-leetcode
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»