输入:
integer
类型。输出
任何矩形内的所有点
我应该使用什么是高效算法和数据结构?感谢。
答案 0 :(得分:3)
您可以使用sweep line algorithm:按X坐标对点进行排序。当矩形进入或离开扫描线(左右边界的X坐标)时引入事件。当前与扫掠线相交的矩形是投影到扫掠线上时的一组间隔,因此可以使用interval tree或segment tree(后者仅在Y坐标压缩后进行维护),但您可以这样做作为预处理步骤)。
使用该设置,您只需要检查每个点是否与数据结构维护的某个间隔相交。
运行时: O((n + m)log(n + m))
答案 1 :(得分:2)
2d segment tree (example here)是有效的数据结构,用于检查点是否在任何矩形内
答案 2 :(得分:0)
我能想出的最好的想法是检查每个点(x,y)
是否包含在任何矩形(l,t,w,h)
中,产生O(nm)
的运行时限制{{1} }是点的数量,n
是矩形的数量。