-
Notifications
You must be signed in to change notification settings - Fork 3
/
729.cpp
66 lines (58 loc) · 1.67 KB
/
729.cpp
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class MyCalendar {
private:
map<int, int> mp; // end, start
public:
MyCalendar() {
}
bool book(int start, int end) {
auto element = mp.upper_bound(start);
if (element != mp.end() && element->second < end) return false;
mp[end] = start;
return true;
}
};
/**
* Your MyCalendar object will be instantiated and called as such:
* MyCalendar* obj = new MyCalendar();
* bool param_1 = obj->book(start,end);
*/
// V2
// class MyCalendar {
// public:
// map<int, int> mp;
// MyCalendar() {
// }
// bool book(int start, int end) {
// auto hi = mp.upper_bound(start);
// auto lo = mp.lower_bound(start);
// if (lo != mp.end() && lo->first == start) return false;
// if (lo != mp.begin()) {
// --lo;
// }
// bool eraseHi = false;
// bool eraseLo = false;
// if (hi != mp.end()) {
// if (end > hi->first) return false;
// if (end == hi->first) {
// end = max(end, hi->second);
// eraseHi = true;
// }
// }
// if (lo != hi) {
// if (start < lo->second) return false;
// if (start == lo->second) {
// start = min(start, lo->first);
// eraseLo = true;
// }
// }
// if (eraseHi) mp.erase(hi);
// if (eraseLo) mp.erase(lo);
// mp[start] = end;
// return true;
// }
// };
// /**
// * Your MyCalendar object will be instantiated and called as such:
// * MyCalendar* obj = new MyCalendar();
// * bool param_1 = obj->book(start,end);
// */