Last updated on October 9th, 2024 at 06:21 pm
Here, We see My Calendar III LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
Topics
Ordered Map, Segment Tree
Level of Question
Hard
My Calendar III LeetCode Solution
Table of Contents
Problem Statement
A k
-booking happens when k
events have some non-empty intersection (i.e., there is some time that is common to all k
events.)
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]
Explanation MyCalendarThree myCalendarThree = new MyCalendarThree(); myCalendarThree.book(10, 20); // return 1 myCalendarThree.book(50, 60); // return 1 myCalendarThree.book(10, 40); // return 2 myCalendarThree.book(5, 15); // return 3 myCalendarThree.book(5, 10); // return 3 myCalendarThree.book(25, 55); // return 3
1. My Calendar III LeetCode Solution C++
class MyCalendarThree { public: MyCalendarThree() {} int book(int start, int end) { lines[start]++; lines[end]--; int mx = 0, cnt = 0; for (auto x : lines) { cnt += x.second; mx = max(mx, cnt); } return mx; } private: map<int, int> lines; };
2. My Calendar III LeetCode Solution Java
class MyCalendarThree { private TreeMap<Integer, Integer> lines; public MyCalendarThree() { lines = new TreeMap<>(); } public int book(int start, int end) { lines.put(start, lines.getOrDefault(start, 0) + 1); lines.put(end, lines.getOrDefault(end, 0) - 1); int mx = 0, cnt = 0; for (int x : lines.values()) { cnt += x; mx = Math.max(mx, cnt); } return mx; } }
3. My Calendar III LeetCode Solution JavaScript
var MyCalendarThree = function() { this.tm = {} }; MyCalendarThree.prototype.book = function(start, end) { this.tm[start] = (this.tm[start] || 0) + 1 this.tm[end] = (this.tm[end] || 0) - 1 let max = count = 0 for(let val in this.tm){ max = Math.max(max, count += this.tm[val]) } return max };
4. My Calendar III Solution Python
class MyCalendarThree(object): def __init__(self): self.maxOverlaps = 1 self.bookings = [] def checkOverlaps_boundryCount(self): lst = [] for start, end in self.bookings: lst.append((start, +1)) lst.append((end, -1)) lst.sort() overlaps = 0 for b in lst: overlaps += b[1] self.maxOverlaps = max(self.maxOverlaps, overlaps) return self.maxOverlaps def book(self, start, end): self.bookings.append((start, end)) return self.checkOverlaps_boundryCount()