實現乙個 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 ...