题目链接
思路
- 本题关键思路在于:要判断时间是否冲突,只需要找到开始时间和本次日程的开始时间相距最近的两次日程m n(m在前n在后) 只要m.end <= now.start 且 n.start >= now.end即可
- 有了这个思路,那么我们可以用TreeMap来保存日程,key为statr,value为end即可~
class MyCalendar {
TreeMap<Integer,Integer> map;
public MyCalendar() {
map = new TreeMap<>();
}
public boolean book(int start, int end) {
Map.Entry<Integer,Integer> before = map.floorEntry(start) , after = map.ceilingEntry(start);
if(null != before && before.getValue() > start)
return false;
if(null != after && after.getKey() < end)
return false;
map.put(start,end);
return true;
}
}