当前位置:网站首页>Sword finger offer II 058: schedule
Sword finger offer II 058: schedule
2022-07-05 06:09:00 【Chrysanthemum headed bat】
The finger of the sword Offer II 058: calendar
subject
Topic linking
Please implement a MyCalendar Class to store your schedule . If there is no other schedule for the time to be added , You can store this new schedule .
MyCalendar There is one book(int start, int end) Method . It means in start To end Add a schedule in time , Be careful , The time here is a half open interval , namely [start, end), The set of real Numbers x For the range of , start <= x < end.
When there is some time overlap between the two schedules ( For example, both schedules are in the same time ), There will be repeat bookings .
Every time you call MyCalendar.book When the method is used , If the schedule can be successfully added to the calendar without causing duplicate bookings , return true. otherwise , return false And don't add the schedule to the calendar .
Please follow the steps below to call MyCalendar class : MyCalendar cal = new MyCalendar();MyCalendar.book(start, end)
Example :
Input :
["MyCalendar","book","book","book"]
[[],[10,20],[15,25],[20,30]]
Output : [null,true,false,true]
explain :
MyCalendar myCalendar = new MyCalendar();
MyCalendar.book(10, 20); // returns true
MyCalendar.book(15, 25); // returns false , The second schedule cannot be added to the calendar , Because of time 15 It has been scheduled by the first schedule
MyCalendar.book(20, 30); // returns true , The third schedule can be added to the calendar , Because the first schedule doesn't include time 20

Problem solving
Method 1 :map+ Two points search
because map Will automatically key Sort , So sort the left boundary directly .
Find... By bisection , Find greater than or equal to end, The left border .
Just make , The right boundary ratio of the previous one start Small can be inserted successfully
class MyCalendar {
public:
map<int,int> mp;
MyCalendar() {
}
bool book(int start, int end) {
map<int,int>::iterator it=mp.lower_bound(end);// return key value Greater than or equal to end The first position
if(it==mp.begin()||(--it)->second<=start){
mp[start]=end;
return true;
}
return false;
}
};
边栏推荐
- Personal developed penetration testing tool Satania v1.2 update
- 1.13 - RISC/CISC
- [jailhouse article] look mum, no VM exits
- leetcode-3:无重复字符的最长子串
- [rust notes] 16 input and output (Part 2)
- Multi screen computer screenshots will cut off multiple screens, not only the current screen
- Wazuh開源主機安全解决方案的簡介與使用體驗
- Arduino 控制的 RGB LED 无限镜
- 【Jailhouse 文章】Jailhouse Hypervisor
- CF1634 F. Fibonacci Additions
猜你喜欢
随机推荐
F - Two Exam(AtCoder Beginner Contest 238)
QQ电脑版取消转义符输入表情
Over fitting and regularization
[rust notes] 16 input and output (Part 2)
Bit mask of bit operation
SPI details
Common optimization methods
Règlement sur la sécurité des réseaux dans les écoles professionnelles secondaires du concours de compétences des écoles professionnelles de la province de Guizhou en 2022
Traditional databases are gradually "difficult to adapt", and cloud native databases stand out
884. Uncommon words in two sentences
[jailhouse article] performance measurements for hypervisors on embedded ARM processors
Error ora-28547 or ora-03135 when Navicat connects to Oracle Database
927. Trisection simulation
[jailhouse article] look mum, no VM exits
R language [import and export of dataset]
2022年貴州省職業院校技能大賽中職組網絡安全賽項規程
Control unit
On the characteristics of technology entrepreneurs from Dijkstra's Turing Award speech
Fried chicken nuggets and fifa22
[jailhouse article] jailhouse hypervisor


![[article de jailhouse] jailhouse hypervisor](/img/f4/4809b236067d3007fa5835bbfe5f48.png)






