当前位置:网站首页>【C语言刷LeetCode】729. 我的日程安排表 I(M)
【C语言刷LeetCode】729. 我的日程安排表 I(M)
2022-07-20 07:57:00 【kinbo88】
【
实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。
当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复预订 。
日程可以用一对整数 start 和 end 表示,这里的时间是半开区间,即 [start, end), 实数 x 的范围为, start <= x < end 。
实现 MyCalendar 类:
MyCalendar() 初始化日历对象。
boolean book(int start, int end) 如果可以将日程安排成功添加到日历中而不会导致重复预订,返回 true 。否则,返回 false 并且不要将该日程安排添加到日历中。
示例:
输入:
["MyCalendar", "book", "book", "book"]
[[], [10, 20], [15, 25], [20, 30]]
输出:
[null, true, false, true]
解释:
MyCalendar myCalendar = new MyCalendar();
myCalendar.book(10, 20); // return True
myCalendar.book(15, 25); // return False ,这个日程安排不能添加到日历中,因为时间 15 已经被另一个日程安排预订了。
myCalendar.book(20, 30); // return True ,这个日程安排可以添加到日历中,因为第一个日程安排预订的每个时间都小于 20 ,且不包含时间 20 。
提示:
0 <= start < end <= 109
每个测试用例,调用 book 方法的次数最多不超过 1000 次。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/my-calendar-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
】
看题解都是线段树,有点高级的数据结构,不会也没关系。
用两个数组分别存放起始和结束的点,然后存数时,进行遍历看是否冲突。存放的数组不关系是否有序,反正都是遍历。
不冲突就是 start >= r || end <= l,那么冲突就是:
start < r || end > l
代码如下:
typedef struct {
int larr[1000];
int rarr[1000];
} MyCalendar;
int idx; // 当全局变量方便一些
MyCalendar* myCalendarCreate() {
MyCalendar *obj = (MyCalendar *)malloc(sizeof(MyCalendar));
idx = 0;
memset(obj->larr, 0, sizeof(int) * 1000);
memset(obj->rarr, 0, sizeof(int) * 1000);
return obj;
}
bool myCalendarBook(MyCalendar* obj, int start, int end) {
int i;
for (i = 0; i < idx; i++) {
if (start < obj->rarr[i] && end > obj->larr[i]) { // 这种肯定就冲突了
return false;
}
}
obj->larr[idx] = start; // 不冲突就加入数组
obj->rarr[idx] = end;
idx++;
return true;
}
void myCalendarFree(MyCalendar* obj) {
free(obj);
}
/**
* Your MyCalendar struct will be instantiated and called as such:
* MyCalendar* obj = myCalendarCreate();
* bool param_1 = myCalendarBook(obj, start, end);
* myCalendarFree(obj);
*/
边栏推荐
猜你喜欢
随机推荐
postgreSQL里怎么切换结束符?
sql server 2022 安装
Go GMP model
MySQL JDBC programming
微信、QQ、电话下单,在线订货系统助企业走出困局
Fluent print widget level list
逆向分析工具IDA与开源工具Ghidra、Cutter对比测评
[Verilog digital system design (Xia Yuwen) -- basic knowledge of Verilog 1]
每日三题 7.19
1.54寸TFT ST7789液晶屏图片如何取模
点播 构造自己的播放器 用户调用获取视频播放地址接口
两种常见的Vlan间通信的方式
ASP.NET CORE 自定义中间件
oracle常用命令
pytest + allure 结合使用展示图表结果(3)
Program yuan sent an article lamenting unemployment, which attracted program apes from various industries to comfort, laughing in the comment area
比特置不可用——文件或目錄損壞且無法讀取
Addition, deletion, query and modification of MySQL [advanced]
uniapp使用uni.request请求报错{“errMsg“:“request:fail abort statusCode:-1“}的解决办法
Flink 的学习笔记