【发布时间】:2017-02-19 05:03:44
【问题描述】:
我需要一个允许的数据结构
- addPoint(x, y) in O(logN)
- printDiameter() in O(logN)
其中 N 是多边形中的当前点数。
显然,这两个点将位于多边形的凸包上。使用反节点对(Rotating-Callipers)的概念,我们可以发现N个点的直径是O(N)。
This巧妙地解释了O(n)的解决方案,但它不支持插入点。
【问题讨论】:
标签: polygon convex-hull
我需要一个允许的数据结构
其中 N 是多边形中的当前点数。
显然,这两个点将位于多边形的凸包上。使用反节点对(Rotating-Callipers)的概念,我们可以发现N个点的直径是O(N)。
This巧妙地解释了O(n)的解决方案,但它不支持插入点。
【问题讨论】:
标签: polygon convex-hull
只要是balanced,k-d 树就可以在 O(logN) 中进行插入。对于直径部分,您必须检查每个节点才能找到最远的部分,因此它应该是 O(N)。 另一种解决方案是使用四叉树,并遍历它以仅获取位于树外部的节点。
【讨论】: