这是我的本科计算机课程中的一个漏洞,我从来没有完全搞清楚除了天真的方法。
假设我们把一周分成几分钟(10080分钟),我们有“节目”从某一分钟开始,持续一段时间。
所以说,480分钟,我们可能有一个30分钟的节目。
所以我们有N个显示,每个都有一个开始时间和持续时间,问题是给定一个在[1..10080]范围内的分钟值,有什么更好的方法可以找到它是否在一个显示内,然后简单地浏览所有这些显示,并做一个或一个基本的开始时间树。
我在想是否有某种聪明的散列算法,可以在那里执行其他聪明的成员资格测试。具有预先插入成本但有效的聚合o(1)搜索的东西。我的直觉告诉我应该有一个聪明的方法。
或者,计算机的速度是否足够快,以至于最优的解决方案只是在浪费时间和时间?
最佳答案
使用一个10080位数组,对于每个特定的显示,用1标记已经在使用的时间当下一个节目要检查时,只需检查是否设置了特定的分钟,即o(1)