很经典的线段树模版题,但也可以用二分的方法去解
维护一个有序数组,如果新的日程安排的头尾插入有序数组的位置相同,并且头的下标是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;
}
}

本文介绍了一道经典的线段树模版题,通过维护一个有序数组来判断新的日程安排是否可以插入。使用二分查找定位插入位置,确保插入后数组仍保持有序性。
362

被折叠的 条评论
为什么被折叠?



