Menu
CoddyTech

Meeting Rooms

Otrzymujesz listę spotkań w postaci dwóch tablic: spotkanie i trwa od starts[i] do ends[i]. Jedna osoba chce uczestniczyć we wszystkich, więc żadne dwa spotkania nie mogą się nakładać. Spotkanie może rozpocząć się dokładnie w chwili zakończenia innego. Zwróć true, jeśli ta osoba może uczestniczyć we wszystkich spotkaniach, a w przeciwnym razie false.

Funkcja

canAttendMeetings(starts: integer-array, ends: integer-array) → boolean
startsinteger-array
czas rozpoczęcia każdego spotkania
endsinteger-array
czas zakończenia każdego spotkania, pod tym samym indeksem co jego rozpoczęcie
Zwracaboolean
prawda, jeśli żadne dwa spotkania się nie nakładają, w przeciwnym razie fałsz

Ograniczenia

  • 1 ≤ starts.length == ends.length ≤ 5000
  • 0 ≤ starts[i] < ends[i] ≤ 106
  • Spotkania nie są posortowane. Dwa spotkania mogą być identyczne.

Przykłady

Wejście
starts = [9, 13, 10]ends = [10, 15, 12]
Wyjście
true
Wyjaśnienie
Spotkania w kolejności czasowej odbywają się od 9 do 10, od 10 do 12 i od 13 do 15. Drugie zaczyna się w chwili, gdy kończy się pierwsze, co jest dozwolone, więc odpowiedź to true.

lock icon+15 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Jeśli spotkania są rezerwowane pojedynczo, jak sprawdzać każdą nową rezerwację względem harmonogramu w O(log n), bez ponownego sortowania wszystkiego?

Zresetuj kod
def canAttendMeetings(starts, ends):
    # Wpisz tutaj kod
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

starts = [9, 13, 10]
ends = [10, 15, 12]

Oczekiwane

true