import java.util.TreeMap;
class MyCalendar {
TreeMap<Integer, Integer> treeMap;
public MyCalendar() {
treeMap = new TreeMap();
}
public boolean book(int start, int end) {
if (treeMap == null){
treeMap.put(start, end);
}
/**
* 使用TreeMap的ceilingKey()和floorKey()方法比较其他区间,ceilingKey(start)方法获得大于start的最小值,floorKey()方法获得小于start的最大值
* 如果新加入的区间左边或者右边为空,那肯定能添加
* 否则,和右边的第一个区间相比,end要小于其start;和左边的第一个区间相比,start要大于其end(使用get()方法根据键获取值)
*/
if (treeMap.ceilingKey(start) != null && end > treeMap.ceilingKey(start)){
return false;
}
else if (treeMap.floorKey(start) != null && start < treeMap.get(treeMap.floorKey(start))){
return false;
}
else {
treeMap.put(start, end);
return true;
}
}
}
https://leetcode-cn.com/problems/my-calendar-i/