05 August 2008
设计Calendar使之加入event而不会发生triple booking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class MyCalendarTwo {
private TreeMap<Integer, Integer> map;
public MyCalendarTwo() {
map = new TreeMap<>();
}
public boolean book(int start, int end) {
map.put(start, map.getOrDefault(start, 0) + 1);
map.put(end, map.getOrDefault(end, 0) - 1);
int count = 0;
for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
count += entry.getValue();
if(count > 2) {
map.put(start, map.get(start) - 1);
if(map.get(start) == 0) {
map.remove(start);
}
map.put(end, map.get(end) + 1);
if(map.get(end) == 0) {
map.remove(end);
}
return false;
}
}
return true;
}
}