LeetcodeAug 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 integer k representing the largest integer such that there exists a k-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;
  }
}






Comments