很经典的线段树模版题,但也可以用二分的方法去解
维护一个有序数组,如果新的日程安排的头尾插入有序数组的位置相同,并且头的下标是0/2/4等偶数,尾的下标为1/3/5等奇数,则插入成功,否则插入失败。
class MyCalendar {
List<Integer> array = new ArrayList<>();
public MyCalendar() {
}
public boolean book(int start, int end) {
int first = Collections.binarySearch(array, start);
int second = Collections.binarySearch(array, end - 1);
if(second == first && first < 0 && Math.abs(first % 2) == 1) {
array.add(start);
array.add(end - 1);
Collections.sort(array);
return true;
}
return false;
}
}