Leetcode•Aug 18, 2025
My Calendar III
Hazrat Ali
Leetcode
You are given some events [startTime, endTime)
, after each given event, return an integer k
representing the maximum k
-booking between all the previous events.
Implement the MyCalendarThree
class:
MyCalendarThree()
Initializes the object.int book(int startTime, int endTime)
Returns an integerk
representing the largest integer such that there exists ak
-booking in the calendar.
Example 1:
Input ["MyCalendarThree", "book", "book", "book", "book", "book", "book"] [[], [10, 20], [50, 60], [10, 40], [5, 15], [5, 10], [25, 55]] Output [null, 1, 1, 2, 3, 3, 3]
Solution
class MyCalendarThree {
constructor() {
this.timeline = {};
}
/**
* @param {number} start
* @param {number} end
* @return {number}
*/
book(start, end) {
this.timeline[start] = ~~this.timeline[start] + 1;
this.timeline[end] = ~~this.timeline[end] - 1;
let ongoing = 0;
let k = 0;
for (let v of Object.values(this.timeline)) {
k = Math.max(k, (ongoing += v));
}
return k;
}
}