我会尽力使我的案例场景变得简单。
1-)假设我们需要在某种阵列/数据结构中存储大量矩形。每个矩形具有不同的尺寸,并且位于屏幕的各个部分。矩形不能重叠在一起。
2-)然后我们点击屏幕,用鼠标点[x,y]。
现在,我们需要确定是否点击了其中一个矩形的一部分。好吧,迭代遍历所有矩形以进行某种比较是很疯狂的,特别是如果有大量的比较。
尽可能少的步骤,最快的技术/算法是什么?在这种情况下使用的最佳数据结构是什么?
答案 0 :(得分:1)
一种方法是使用quadtree来存储矩形:根表示包含所有矩形的整个区域,然后根据需要对该区域进行递归细分。
如果要测试某个坐标是否位于其中一个矩形内,则从根部开始,然后沿树向下走,直到找到矩形为止。
这可以在O(log n)时间内完成。