algorithm - 查找由一组矩形包含的点

标签 algorithm data-structures geometry computational-geometry

输入:

  • 一组矩形(也有重叠的矩形)和一组点。
  • 坐标是integer类型。
  • 矩形的边平行于轴

输出:

给定的任何矩形内的所有点


我应该使用什么高效算法和数据结构?谢谢。

最佳答案

您可以使用 sweep line algorithm :按 X 坐标对点进行排序。当矩形进入或离开扫描线(其左右边界的 X 坐标)时引入事件。当前与扫掠线相交的矩形在投影到扫掠线上时是一组间隔,因此可以使用 interval tree 来维护它们。或 segment tree (后者仅在 Y 坐标压缩之后,但您可以将其作为预处理步骤)。

使用该设置,对于每个点,您只需要检查它是否与您的数据结构维护的区间之一相交。

运行时间:O((n+m) log (n+m))

关于algorithm - 查找由一组矩形包含的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778007/

相关文章:

algorithm - Skolem 序列生成器算法

data-structures - 排序集的目的是什么?

javascript - 将 2D 圆表示为 1D 数组(出租车几何、冯诺依曼邻域)

java - 判断一个矩形是否与一条线相接

javascript - 在二维中对颜色进行排序

algorithm - 最近邻搜索的方法

c++ - 是否存在连续存储的 HashMap 数据结构?

math - 给定二维空间中的一组线,如何将它们截断到边界内?

java - 输入一个整数,输出一个a边和b边相差最小的矩形

c - C 中的结构 - 不打印整个字符串