Javascript 找出最大间隔重叠一定间隔长度的点

Javascript 找出最大间隔重叠一定间隔长度的点,javascript,node.js,json,algorithm,Javascript,Node.js,Json,Algorithm,我正试图在为每个人列出繁忙时间的情况下,最大限度地提高出席率。活动可以安排在特定日期和时间(例如3月1日至3月8日,从9日至5日)之间的任何时间进行,并最大限度地提高出席率 到目前为止,我已经尝试使用滑动窗口方法和这里描述的计数方法(),但是我只设法使滑动窗口方法在时间复杂度为O(n^3)的情况下工作,不幸的是,这对于我的用例来说还不够好。计数方法不起作用,因为我可以找到最大间隔,但不能找到特定时间段的最大间隔 最坏的情况是大约500人和一个月的时间跨度 任何帮助都将不胜感激。使用间隔树()解决

我正试图在为每个人列出繁忙时间的情况下,最大限度地提高出席率。活动可以安排在特定日期和时间(例如3月1日至3月8日,从9日至5日)之间的任何时间进行,并最大限度地提高出席率

到目前为止,我已经尝试使用滑动窗口方法和这里描述的计数方法(),但是我只设法使滑动窗口方法在时间复杂度为O(n^3)的情况下工作,不幸的是,这对于我的用例来说还不够好。计数方法不起作用,因为我可以找到最大间隔,但不能找到特定时间段的最大间隔

最坏的情况是大约500人和一个月的时间跨度


任何帮助都将不胜感激。

使用间隔树()解决。

如何给出繁忙时间列表?有多少繁忙事件?繁忙时间列表的形式为[{startdate,enddate},…]但我也有给定时间段的1和0形式,其中1是空闲的,0是忙碌的,例如[[1,0,1],[0,1,0]],其中每一个代表一个人。一天中可能会有很多繁忙的活动,因为有人想安排,所以没有限制繁忙/空闲的时间是以小时为单位的?以下是我拥有的数据示例[{开始:2021-03-03T05:00:00.000Z,结束:2021-03-03T07:00:00.000Z},{开始:2021-03-03T09:00:00.000Z,结束:2021-03-04T04:00.000Z}]。这将代表一个人一天的日历。目前我每隔5分钟做一次,但是间隔太大,在合理的时间范围内无法进行计算。你能分享你所做的吗?当然,使用这个npm包,我初始化了一个树。然后我将数据{start:2021-03-03T09:00:00.000Z,end:2021-03-04T04:30:00.000Z}添加到这个树中,并使用tree.insert(start.getTime(),end.getTime())将其添加到树中。这将以毫秒为单位存储间隔。然后,我使用一个类似“滑动窗口”的方法,在我希望召开会议的每一个时间间隔进行调整。这将返回一个数组,可以从中获取长度。物品越多,人们越忙。我们从中取最小值,计算出最佳时间。