Java
import java.util.TreeMap;
/**
* <a href="https://leetcode.com/problems/my-calendar-i/">My Calendar I</a>
* 设计;线段树;数组;二分查找;有序集合
*/
class MyCalendar {
private final TreeMap<Integer, Integer> booked; // <endTime, startTime> 根据结束时间排序
public MyCalendar() {
this.booked = new TreeMap<>();
}
public boolean book(int startTime, int endTime) {
var e = booked.higherEntry(startTime);
if (e != null && e.getValue() < endTime) {
return false;
}
booked.put(endTime, startTime);
return true;
}
}
//class MyCalendar {
// List<int[]> booked;
//
// public MyCalendar() {
// this.booked = new ArrayList<>();
// }
//
// public boolean book(int startTime, int endTime) {
// for (int[] interval : booked) {
// int l = interval[0], r = interval[1];
// if (l < endTime && startTime < r) {
// return false;
// }
// }
// booked.add(new int[]{startTime, endTime});
// return true;
// }
//}