LeetCode 我的日程安排表I

2021-09-20 07:16:37 字數 1666 閱讀 6640

實現乙個 mycalendar 類來存放你的日程安排。如果要新增的時間內沒有其他安排,則可以儲存這個新的日程安排。

mycalendar 有乙個 book(int start, int end)方法。它意味著在 start 到 end 時間內增加乙個日程安排,注意,這裡的時間是半開區間,即 [start, end), 實數 x 的範圍為, start <= x < end。

當兩個日程安排有一些時間上的交叉時(例如兩個日程安排都在同一時間內),就會產生重複預訂。

每次呼叫 mycalendar.book方法時,如果可以將日程安排成功新增到日曆中而不會導致重複預訂,返回 true。否則,返回 false 並且不要將該日程安排新增到日曆中。

請按照以下步驟呼叫 mycalendar 類: mycalendar cal = new mycalendar(); mycalendar.book(start, end)

示例 1:

mycalendar();

mycalendar.book(10, 20); // returns true

mycalendar.book(15, 25); // returns false

mycalendar.book(20, 30); // returns true

解釋:

第乙個日程安排可以新增到日曆中. 第二個日程安排不能新增到日曆中,因為時間 15 已經被第乙個日程安排預定了。

第三個日程安排可以新增到日曆中,因為第乙個日程安排並不包含時間 20 。

說明:

每個測試用例,呼叫 mycalendar.book 函式最多不超過 100次。

呼叫函式 mycalendar.book(start, end)時, start 和 end 的取值範圍為 [0, 10^9]。

思路分析:我們只要將綁成乙個pair插入鍊錶中即可。太簡單了,一分鐘就搞定了。。。

class

mycalendar

bool

book

(int start,

int end)

有重疊的迭代器

while

(it != mylist.

end(

)&& it-

>second < start)

//it == mylist.end() 代表沒有找到有交集的位置,it->first >= end代表的是在兩個日程中間

if(it == mylist.

end(

)|| it-

>first >= end));

//插入到it這個位置

LeetCode 我的日程安排表III(細節處理)

實現乙個 mycalendar 類來存放你的日程安排,你可以一直新增新的日程安排。mycalendar 有乙個 book int start,int end 方法。它意味著在start到end時間內增加乙個日程安排,注意,這裡的時間是半開區間,即 start,end 實數 x 的範圍為,start ...

732 我的日程安排表 III

題目 實現乙個 mycalendar 類來存放你的日程安排,你可以一直新增新的日程安排。mycalendar 有乙個 book int start,int end 方法。它意味著在start到end時間內增加乙個日程安排,注意,這裡的時間是半開區間,即 start,end 實數 x 的範圍為,sta...

729 我的日程安排表 I

實現乙個mycalendar類來存放你的日程安排。如果要新增的時間內沒有其他安排,則可以儲存這個新的日程安排。mycalendar有乙個book int start,int end 方法。它意味著在 start 到 end 時間內增加乙個日程安排,注意,這裡的時間是半開區間,即 start,end ...