LeetCode 732. 我的日程安排表 III(差分思想)
文章目錄
- 1. 題目
- 2. 解題
1. 題目
實現一個 MyCalendar 類來存放你的日程安排,你可以一直添加新的日程安排。
MyCalendar 有一個 book(int start, int end)方法。它意味著在start到end時間內增加一個日程安排,注意,這里的時間是半開區間,即 [start, end), 實數 x 的范圍為, start <= x < end。
當 K 個日程安排有一些時間上的交叉時(例如K個日程安排都在同一時間內),就會產生 K 次預訂。
每次調用 MyCalendar.book方法時,返回一個整數 K ,表示最大的 K 次預訂。
請按照以下步驟調用MyCalendar 類: MyCalendar cal = new MyCalendar(); MyCalendar.book(start, end)
示例 1: MyCalendarThree(); MyCalendarThree.book(10, 20); // returns 1 MyCalendarThree.book(50, 60); // returns 1 MyCalendarThree.book(10, 40); // returns 2 MyCalendarThree.book(5, 15); // returns 3 MyCalendarThree.book(5, 10); // returns 3 MyCalendarThree.book(25, 55); // returns 3 解釋: 前兩個日程安排可以預訂并且不相交,所以最大的K次預訂是1。 第三個日程安排[10,40]與第一個日程安排相交,最高的K次預訂為2。 其余的日程安排的最高K次預訂僅為3。 請注意,最后一次日程安排可能會導致局部最高K次預訂為2,但答案仍然是3, 原因是從開始到最后,時間[10,20],[10,40]和[5,15]仍然會導致3次預訂。說明: 每個測試用例,調用 MyCalendar.book 函數最多不超過 400次。 調用函數 MyCalendar.book(start, end)時, start 和 end 的取值范圍為 [0, 10^9]來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/my-calendar-iii
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
類似題目:
LeetCode 729. 我的日程安排表 I(set 二分查找)
LeetCode 731. 我的日程安排表 II(set二分查找 / 差分思想)
- 本題更好的解法是線段樹(寫不來)
- 用差分思想做
364 ms 24.2 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 732. 我的日程安排表 III(差分思想)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 02.改善深层神经网络:超参数调试、正则
- 下一篇: LeetCode 833. 字符串中的查