日程安排问题,即同一时间段内不能有超过n个的事件同时发生,均可以采用imos法来解决,具体方法如下:
class MyCalendar {
public:
MyCalendar() {
}
bool book(int start, int end) {
rec[start]++;
rec[end]--;
int c=0;
for(auto &r:rec)
{
c+=r.second;
if(c>1) //729题是1,731题改成2,就行了。
{
rec[start]--;
rec[end]++;
return false;
}
}
return true;
}
private:
map<int,int> rec;
};
/**
* Your MyCalendar object will be instantiated and called as such:
* MyCalendar obj = new MyCalendar();
* bool param_1 = obj.book(start,end);
*/
注意一点,这里必须用map,不能用unordered_map,因为必须要求rec的key为有序。