标签(空格分隔): leetcode array medium
题目
Implement a MyCalendar
class to store your events. A new event can be added if adding the event will not cause a double booking.
Your class will have the method, book(int start, int end)
. Formally, this represents a booking on the half open interval [start, end)
, the range of real numbers x
such that start <= x < end
.
A double booking happens when two events have some non-empty intersection (ie., there is some time that is common to both events.)
For each call to the method MyCalendar.book
, return true
if the event can be added to the calendar successfully without causing a double booking. Otherwise, return false
and do not add the event to the calendar.
Your class will be called like this:MyCalendar cal = new MyCalendar();
MyCalendar.book(start, end)
Example 1:
Note:
- The number of calls to
MyCalendar.book
per test case will be at most1000
. - In calls to
MyCalendar.book(start, end)
,start
andend
are integers in the range[0, 10^9]
. -
思路本题定义一个数值对数组A存储{start,end},要想发生double booking,必须满足当前的
代码
max(start,A.start)<min(end,A.end)class MyCalendar { public: vector<pair<int,int>> books; MyCalendar() { } bool book(int start, int end) { for(auto item:books) { if(max(item.first,start)<min(item.second,end)) return false; } books.push_back({start,end}); return true; } }; /** * Your MyCalendar object will be instantiated and called as such: * MyCalendar obj = new MyCalendar(); * bool param_1 = obj.book(start,end); */