当前位置:网站首页>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;
}
};
边栏推荐
- Appium automation test foundation - Summary of appium test environment construction
- Convolution neural network -- convolution layer
- Fried chicken nuggets and fifa22
- leetcode-556:下一个更大元素 III
- 2022 pole technology communication arm virtual hardware accelerates the development of Internet of things software
- 传统数据库逐渐“难适应”,云原生数据库脱颖而出
- 6. Logistic model
- 2017 USP Try-outs C. Coprimes
- 【Rust 笔记】13-迭代器(中)
- redis发布订阅命令行实现
猜你喜欢

中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章

Data visualization chart summary (I)

CF1634E Fair Share

Doing SQL performance optimization is really eye-catching

Overview of variable resistors - structure, operation and different applications

Traditional databases are gradually "difficult to adapt", and cloud native databases stand out

Matrixdb V4.5.0 was launched with a new mars2 storage engine!

Appium基础 — 使用Appium的第一个Demo

shared_ Repeated release heap object of PTR hidden danger

Navicat連接Oracle數據庫報錯ORA-28547或ORA-03135
随机推荐
PC register
Convolution neural network -- convolution layer
wordpress切换页面,域名变回了IP地址
Introduction and experience of wazuh open source host security solution
Some common problems in the assessment of network engineers: WLAN, BGP, switch
Full Permutation Code (recursive writing)
Sqlmap tutorial (1)
Simply sort out the types of sockets
Simple knapsack, queue and stack with deque
Traditional databases are gradually "difficult to adapt", and cloud native databases stand out
1996. number of weak characters in the game
SPI 详解
Redis publish subscribe command line implementation
Navicat連接Oracle數據庫報錯ORA-28547或ORA-03135
【Rust 笔记】17-并发(上)
API related to TCP connection
leetcode-556:下一个更大元素 III
快速使用Amazon MemoryDB并构建你专属的Redis内存数据库
One question per day 1447 Simplest fraction
一些工具的记录2022