我正在尝试解决间隔日历问题。
在一个人的日历中将忙碌时段作为数据集 会议所需的时间(例如:45分钟)编写一种查找方法 一个开放的可用插槽来安排会议。
输入:
per1:(1,5)(10,14)(19,20)(27,30)per2:(3,5)(12,15)(18,21)(23,24)
输出:(6,9)(16,17)(22,22)(25,26)
我正在尝试使用以下方法解决此问题:
A)香草JavaScript(ES5 / ES6)
B)使用间隔树等数据结构。
我在想,也许将两个日历结合起来,并按照开始时间的升序对其进行排序,然后再开始寻找广告位?如果我错了,请纠正我。
在同一方面需要您的建议/建议。
答案 0 :(得分:0)
鉴于这是一个绝对小时数的元组,并且只有两个人参与,所以您可以维护长度为24的状态数组。运行循环以标记p1和p2繁忙的所有小时数。您将剩下一个小时的阵列,两个小时都不会很忙,然后提取这些时间间隔之间的绝对差距。这是一个小提琴(https://jsfiddle.net/r9nq63tk/1/),用于处理忙时的标记。
let freeHours = new Array(24);
// Mark the busy hours
let intervals = [];
for(let hours = 0; hours < 24; hours++) {
// Find the ranges where the hours have not been marked and push it to intervals
}