博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] My Calendar III 我的日历之三
阅读量:7262 次
发布时间:2019-06-29

本文共 2042 字,大约阅读时间需要 6 分钟。

 

Implement a MyCalendarThree class to store your events. A new event can always be added.

Your class will have one 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.

K-booking happens when K events have some non-empty intersection (ie., there is some time that is common to all K events.)

For each call to the method MyCalendar.book, return an integer K representing the largest integer such that there exists a K-booking in the calendar.

Your class will be called like this: 
MyCalendarThree cal = new MyCalendarThree(); 
MyCalendarThree.book(start, end)

Example 1:

MyCalendarThree();MyCalendarThree.book(10, 20); // returns 1MyCalendarThree.book(50, 60); // returns 1MyCalendarThree.book(10, 40); // returns 2MyCalendarThree.book(5, 15); // returns 3MyCalendarThree.book(5, 10); // returns 3MyCalendarThree.book(25, 55); // returns 3Explanation: The first two events can be booked and are disjoint, so the maximum K-booking is a 1-booking.The third event [10, 40) intersects the first event, and the maximum K-booking is a 2-booking.The remaining events cause the maximum K-booking to be only a 3-booking.Note that the last event locally causes a 2-booking, but the answer is still 3 becauseeg. [10, 20), [10, 40), and [5, 15) are still triple booked.

 

Note:

  • The number of calls to MyCalendarThree.book per test case will be at most 400.
  • In calls to MyCalendarThree.book(start, end)start and end are integers in the range [0, 10^9].

 

这道题是之前那两道题,的拓展,论坛上有人说这题不应该算是Hard类的,但实际上如果没有之前那两道题做铺垫,直接上这道其实还是还蛮有难度的。这道题博主在做完之前那道,再做这道一下子就做出来了,因为用的就是之前那道的解法二,具体的讲解可以参见那道题,反正博主写完那道题再来做这道题就是秒解啊,参见代码如下:

 

class MyCalendarThree {public:    MyCalendarThree() {}        int book(int start, int end) {        ++freq[start];        --freq[end];        int cnt = 0, mx = 0;        for (auto f : freq) {            cnt += f.second;            mx = max(mx, cnt);        }        return mx;    }    private:    map
freq;};

 

类似题目:

 

参考资料:

 

转载地址:http://rhddm.baihongyu.com/

你可能感兴趣的文章
Okhttp源码阅读(二)——一个缓存是怎么触发的
查看>>
Vuecli3开发环境搭建
查看>>
Go语言学习(1) - 简介
查看>>
【刘文彬】EOS商业落地利器:多签名操作与应用
查看>>
Nginx转发TCP实现负载均衡
查看>>
使用nodejs搭建HTTPS server
查看>>
开发交易所平台系统撮合周期费用
查看>>
golang设计模式之工厂方法模式
查看>>
git 基本使用指令
查看>>
nvm 怎么安装 ?
查看>>
Mac环境下本地svn的使用
查看>>
记一次 VUE 项目优化实践
查看>>
网易云缓存歌曲flac格式如何转化为mp3格式?
查看>>
runc容器逃逸漏洞最强后续:应对之策汇总与热点疑问解答
查看>>
JS实例学习笔记——w3cschool+菜鸟教程
查看>>
ubuntu下Nginx详解及点播直播服务器搭建
查看>>
Webpack DLL 配置教程
查看>>
构造函数创建私有变量(防继承)
查看>>
Why Kubernetes ,我所理解的docker与k8s
查看>>
Transformer-XL: Unleashing the Potential of Attention Models
查看>>