【发布时间】:2015-01-03 06:58:54
【问题描述】:
您如何确定是否存在一组满足特定给定条件的值。标准采用区间和该区间内的最小值的形式。
例如,给定条件:
Interval : Minimum value in that interval
{2, 2} : 5
{1, 4} : 1
{4, 4} : 4
可以满足的一组值是
{1, 5, 1, 4}
另一方面,给定标准:
Interval : Minimum value in that interval
{2, 3} : 1
{1, 4} : 2
{4, 4} : 4
不存在满足它们的这样一组值。
我想确定是否存在一组满足给定条件的值(即,我只想找到一个算法,如果存在一组满足条件的值,则返回 true,如果不满足,则返回 false )。
我知道如何使用 O(N^2) 蛮力来做到这一点,但如果可能的话,我想实现 O(N lgN) 解决方案。
我第一次尝试解决这个问题涉及合并重叠区间,然后检查合并区间的最小值,但我很快意识到这样做并不一定能保证正确答案。
我的第二次尝试涉及分段树,即尝试为每个值分配值,如果您试图覆盖一个区间,则不存在这样的区间。但是,这也很快被放弃了,因为即使某些部分被覆盖,您仍然可以在一组有效的值上实现。
我的第三次尝试涉及区间树,试图找到两个区间之间的交点并检查是否可以创建一组有效的值。这看起来很有希望,但它是一个 O(N^2) 算法,所以也被放弃了。
谁能提供一些见解?
【问题讨论】:
标签: algorithm computational-geometry intersection intervals