【发布时间】:2021-03-08 03:44:05
【问题描述】:
在给定每个人的忙碌时间列表的情况下,我正在尝试最大限度地提高活动的出席率。该活动可以在特定日期和时间(例如 3 月 1 日至 3 月 8 日 9-5)之间的任何时间安排,并且出席人数最大化。
到目前为止,我已经尝试使用滑动窗口方法和此处描述的计数方法 (https://www.geeksforgeeks.org/find-the-point-where-maximum-intervals-overlap/) 但是我只设法让滑动窗口方法在 O(n^3) 的时间复杂度下工作,不幸的是对我的用例来说还不够好。计数方法不起作用,因为我可以找到最大间隔,但不能找到某个时间范围。
最坏的情况用例是约 500 人和一个月的时间跨度。
任何帮助将不胜感激。
【问题讨论】:
-
繁忙时间列表如何给出?有多少繁忙的活动?
-
繁忙时间列表采用 [{startdate, enddate}, ... etc] 的形式,但对于给定的时间段,我也有 1 和 0 的形式,其中 1 空闲,0很忙 Ex [[1,0,1],[0,1,0]] 其中每个代表一个人。一天中的繁忙活动可以有多少人想安排多少,所以没有限制
-
每小时提到繁忙/空闲时段?
-
这是我拥有的数据示例 [ { start: 2021-03-03T05:00:00.000Z, end: 2021-03-03T07:00:00.000Z }, { start: 2021- 03-03T09:00:00.000Z,结束:2021-03-04T04:30:00.000Z } ]。这将代表一个人一天的日历。目前我每隔 5 分钟做一次,但是这个间隔仍然太大,无法在合理的时间范围内进行计算。
标签: javascript node.js json algorithm