Сложность: medium
Вы создаете программу для использования в качестве календаря. Мы можем добавить новое событие, если его добавление не приведет к двойному бронированию. Двойное бронирование происходит, когда два события имеют некоторое непустое пересечение (т.е, Событие можно представить в виде пары целых чисел start и end, которая представляет собой бронирование на полуоткрытом интервале [start, end), диапазоне вещественных чисел x таких, что start <= x < end. Реализация класса MyCalendar: MyCalendar() Инициализирует объект календаря. boolean book(int start, int end) Возвращает true, если событие может быть успешно добавлено в календарь, не вызывая двойного бронирования. В противном случае возвращается false и событие не добавляется в календарь.
Пример:
Input
["MyCalendar", "book", "book", "book"]
[[], [10, 20], [15, 25], [20, 30]]
Output
[null, true, false, true]
👨💻 Алгоритм:
1⃣Создайте класс MyCalendar с инициализатором для хранения списка событий.
2⃣Реализуйте метод book(int start, int end) для проверки пересечения нового события с уже существующими событиями.
3⃣Если новое событие не пересекается с существующими событиями, добавьте его в список событий и верните true. В противном случае верните false.
😎 Решение:
class MyCalendar {
private var events: [(Int, Int)]
init() {
events = []
}
func book(_ start: Int, _ end: Int) -> Bool {
for (s, e) in events {
if start < e && end > s {
return false
}
}
events.append((start, end))
return true
}
}Ставь 👍 и забирай 📚 Базу знаний