/**
* 最简单但效率很低的做法
* Runtime: 109 ms, faster than 14.10%
* Memory Usage: 51.8 MB, less than 26.79%
*/
class MyCalendar {
List<int[]> intervals;
public MyCalendar() {
intervals = new ArrayList();
}
public boolean book(int start, int end) {
for (int[] interval : intervals) {
if (start < interval[1] && end > interval[0]) {
return false;
}
}
intervals.add(new int[]{start, end});
return true;
}
}
/**
* Runtime: 20 ms, faster than 88.31%
* Memory Usage: 40 MB, less than 49.55%
*/
class MyCalendar {
TreeSet<int[]> ts;
public MyCalendar() {
ts = new TreeSet<>((int[]a, int[]b) -> a[0] - b[0]);
}
public boolean book(int start, int end) {
int[] newInterval = new int[]{start, end};
int[] fl = ts.floor(newInterval), cl = ts.ceiling(newInterval);
if (fl != null && fl[1] > start || cl != null && cl[0] < end) {
return false;
}
ts.add(newInterval);
return true;
}
}