实现一个 MyCalendar
类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。
当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复预订 。
日程可以用一对整数 startTime
和 endTime
表示,这里的时间是半开区间,即 [startTime, endTime)
, 实数 x
的范围为, startTime <= x < endTime
。
实现 MyCalendar
类:
MyCalendar()
初始化日历对象。boolean book(int startTime, int endTime)
如果可以将日程安排成功添加到日历中而不会导致重复预订,返回true
。否则,返回false
并且不要将该日程安排添加到日历中。
class MyCalendar {
Queue<int[]> queue;
public MyCalendar() {
queue = new PriorityQueue<>((o1, o2) -> o1[0]-o2[0]);
}
public boolean book(int startTime, int endTime) {
for (int[] date : queue) {
if (date[0] <= startTime && endTime <= date[1]) return false;
if ((date[1] > startTime && endTime > date[1]) || (date[0] < endTime && startTime < date[0])) return false;
}
queue.offer(new int[]{startTime, endTime});
return true;
}
}