日历问题和识别空闲插槽

时间:2019-03-19 06:30:41

标签: javascript algorithm calendar

我正在尝试解决间隔日历问题。

  

在一个人的日历中将忙碌时段作为数据集   会议所需的时间(例如: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)使用间隔树等数据结构。

我在想,也许将两个日历结合起来,并按照开始时间的升序对其进行排序,然后再开始寻找广告位?如果我错了,请纠正我。

在同一方面需要您的建议/建议。

1 个答案:

答案 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
}