重新开始刷算法题了,
数据结构:
- 可以保存每个时间点start 和 end ,然后进行比较
- 使用数组保存每个时间点是否已有安排,用01表示(我一开始是这种想法,但是也许不合理)
可确定数据结构为保存数组的列表List<int[]> booked;
类构造器booked= new ArrayList<int[]>();
保存了start end 之后,令保存的 为 l 和 r
何时可以添加到日历内呢,感觉这个抽象起来就是数学上区间的问题
[start,end]
[l,r]
l > end or r < start => ok
not ok => not ( l > end or r < start)
=> l < end and r > start
逻辑上的意思的图示见下,也就是新添加的日期里包含了已被book的日期
[start, end]
[l,r]
因此得到代码,即if(start < r && end > l)
class MyCalendar {
List<int[]> booked;
public MyCalendar() {
booked= new ArrayList<int[]>();
}
public boolean book(int start, int end) {
for(int[] arr:booked){
int l = arr[0], r = arr[1];
if(start < r && end > l){
return false;
}
}
booked.add(new int[]{start,end});
return true;
}
}
本题收获由于好久没有自己写java源码了发现Arraylist相关操作都不知道了,本题学到以下操作:
List<int[]> booked; #List的使用
booked= new ArrayList<int[]>();#ArrayList的使用,List的L大写
booked.add(new int[]{start,end}); #匿名数组
本文介绍了一种用于解决日程管理冲突问题的算法实现。通过定义一个列表来存储已预订的时间段,并利用区间比较的方法判断新的预约是否会与已有的预约产生冲突。文章详细展示了如何使用Java实现这一逻辑。

被折叠的 条评论
为什么被折叠?



