arrays - 安排N个人的 session

标签 arrays algorithm list

问题:有N个人,S槽。每个人都有一个他忙的槽列表。 我们必须找到一个算法来找到一个插槽,其中所有这些都是免费的。

我已经知道一个复杂度为 O(NS) 的算法。需要更好的算法。

您可以自由地动态维护不同的数据结构(它们将在安排 session 时更新),可用于最终找到空闲时间。

最佳答案

为每个插槽保留一个插槽计数器。为每个人忙的插槽添加一个到该插槽 slotcounter;为所有人忙碌的时段。

任何在考虑了所有人的忙碌时隙后仍为零的时隙计数器是所有人空闲时隙的计数器。可能是一个 O(k) 算法。

您可以设置一个位掩码/位集,而不是计数,其中 N 的位掩码在他们忙碌的所有位置都设置了位 S。所有人的位掩码的按位或将具有对应于所有空闲槽的零位。

更新: 按照您陈述问题的方式,您不必跟踪人员,只需保留一系列插槽占用指标即可。最初所有标记为免费;当您通过每个人的忙碌时段时,将相应的占用指示器标记​​为忙碌。完成后,任何仍然可用的数组指标就是您的答案。

关于arrays - 安排N个人的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974732/

相关文章:

ruby-on-rails - Ruby - 意外的哈希数据结构

c - c中的内存分配结构指针数组

algorithm - 任何渲染多个实体切割平面的方法?

python - 参数 'out' 在 numpy 函数中的效用

java - stanford cs106a 弹跳球代码问题

Python按某个词切割列表

python - 当越界索引在 np 数组中时,为什么 python numpy.delete 不会引发 indexError

javascript - jquery淡入数组中的项目

Python 在带有 numpy 数组数据的 for 循环中附加一个列表

python - 如何根据单词列表对字符串的单词进行分组?