如何查找某个点是否在一组间隔内?

lez*_*lon 7 c c++ algorithm computational-geometry

我正在寻找最快的方法来决定一条线上的一个点是否在这一行的一个子集内.我给了一个整数Point,我也有一个"列表":

  1. 点,由整数(3,10,1000等)表示
  2. 间隔,我用2个整数代表(2:10是2到10的所有整数,50:60等)

在这个例子中,如果我的点的值是5,那么我返回true,因为它包含在一个区间中,对于55也是如此.如果我的点等于1000,我也返回true,因为它匹配点列表.

我正在寻找一种快速的方法(比线性更快)来检查这种情况,而不必像可能的点那样实现尽可能多的整数(即,对于1:1000的间隔,我不想实现1000个整数).这可以在对数时间内完成吗?

谢谢

编辑:你可以认为任何时候预处理数据列表等于0,因为一旦我的初始间隔被处理,我需要将这个测试应用到10k点