【问题标题】:Data Structure - Diameter of Polygon数据结构 - 多边形的直径
【发布时间】: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


    【解决方案1】:

    只要是balanced,k-d 树就可以在 O(logN) 中进行插入。对于直径部分,您必须检查每个节点才能找到最远的部分,因此它应该是 O(N)。 另一种解决方案是使用四叉树,并遍历它以仅获取位于树外部的节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2018-03-12
      • 2011-08-30
      • 2020-09-22
      • 2021-10-01
      • 2021-03-10
      • 2022-01-20
      相关资源
      最近更新 更多