1+ /*
2+ * @Author: LetMeFly
3+ * @Date: 2025-01-05 21:39:30
4+ * @LastEditors: LetMeFly.xyz
5+ * @LastEditTime: 2025-01-05 21:44:12
6+ */
7+ import java .util .HashMap ;
8+
9+ class MyCalendarThree {
10+ private HashMap <Integer , Integer > tree , lazy ;
11+
12+ private void update (int start , int end , int index , int l , int r ) {
13+ if (l > end || start > r ) {
14+ return ;
15+ }
16+ if (l >= start && r <= end ) {
17+ tree .put (index , tree .getOrDefault (index , 0 ) + 1 );
18+ lazy .put (index , lazy .getOrDefault (index , 0 ) + 1 );
19+ } else {
20+ int mid = (l + r ) >> 1 ;
21+ update (start , end , index * 2 + 1 , l , mid );
22+ update (start , end , index * 2 + 2 , mid + 1 , r );
23+ tree .put (index , lazy .getOrDefault (index , 0 ) + Math .max (tree .getOrDefault (index * 2 + 1 , 0 ), tree .getOrDefault (index * 2 + 2 , 0 )));
24+ }
25+ }
26+
27+ public MyCalendarThree () {
28+ tree = new HashMap <Integer , Integer >();
29+ lazy = new HashMap <Integer , Integer >();
30+ }
31+
32+ public int book (int startTime , int endTime ) {
33+ update (startTime , endTime - 1 , 0 , 0 , 1000000000 );
34+ return tree .get (0 );
35+ }
36+ }
37+
38+ /**
39+ * Your MyCalendarThree object will be instantiated and called as such:
40+ * MyCalendarThree obj = new MyCalendarThree();
41+ * int param_1 = obj.book(startTime,endTime);
42+ */
0 commit comments