【问题标题】:Optimization- Finding element of list which has maximum no. of divisors present in list优化 - 查找列表中具有最大编号的元素。列表中存在的除数
【发布时间】:2021-01-08 23:50:48
【问题描述】:
Eg. [2,8,4,2]
8 has divisors 2,8,4,2
4 has divisor 2,4,2
2 has divisor 2,2

因此 8 具有列表中存在的最大除数。 我可以想到 O(n^2) 算法(排序然后蛮力)但是有没有更优化的解决方案?

编辑:更新示例。

【问题讨论】:

  • 我不清楚为什么 8 的除数是 2,8,2 而 6 的除数只有 2。为什么 6 没有除数 2,6,2?
  • 答案可能是否定的——因为输出大小可以是 O(n^2)...如果你改变输出格式也许是可能的。
  • @Yonlif 输出大小为 O(1)。问题中示例的答案只是8
  • 正确,输出让我很困惑。对不起。
  • 对不起,我在示例中搞砸了。修复它谢谢。 @Yonlif 我仍然认为可能有更好的解决方案,因为有一些重复计算,如果我们可以将其存储在树或不同的数据结构中,可能会更优化

标签: arrays algorithm binary-tree


【解决方案1】:

对于合理的取值范围:

将所有值放入映射中。

找出O(sqrt(value))中每个数字的所有除数并检查它们是否在地图中

复杂度为O(n*sqrt(maxvalue))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多