圆阵列中两个元素的最大和

时间:2015-03-01 10:47:10

标签: arrays sum max distance

假设您有N个非负数(存储在数组中),表示圆中的点。我们需要找到两个元素,这两个元素的总和加上它们在圆圈中的距离是最大的。

实施例: 假设数组为:A = {0,4,2,3,1} 然后循环配置是:

           0
          ...
        .'   '.
      .'       '.
    1|           '|4
     \            /
      \          /
       \        /
        \______/
        3      2

在此示例中,两个元素的最大总和加上其距离 是:4 +(1 + 1 + 1)+ 3 = 10,其中括号是中间距离。

为什么呢? 因为我们逆时针方向从4到3。

相关的想法:

  1. 暴力方法是O(n ^ 2)。
  2. 我相信可以在O(n Log n)
  3. 中解决它
  4. 对于数组中的任何两个元素,我们选择圆中的最大距离。这意味着该距离至少是圆的长度的一半。因此,圆圈的至少两个边缘(“直径”)将始终是我们要求的最大总和的一部分。

0 个答案:

没有答案