【发布时间】:2020-04-30 18:43:40
【问题描述】:
给定一个未排序的数组A[],其中包含n 整数,如何创建一种算法来返回最常出现的元素?
我认为您需要一种方法来计算元素出现的次数。我只能找出一个 O(n2) 实现。我知道我需要先使用排序算法,但如果我要使用归并排序,那已经是 O(n logn)) 的总运行时间了。我只对数据进行了排序,如果不进一步增加运行时间,我就无法查看元素。
【问题讨论】:
-
如果可以对数组进行排序,则归并排序可以达到 n logn 的效果,之后简单的 n 迭代就可以达到目的
-
不是答案,而是线索。 O(n log n) + O(n) 仍然是 O(n log n)。 Big-O 表示法只关心主导项。
-
@DavidC 我以为你会把它们相乘——而不是相加!如果知道这一点,我就不会问这个问题了。谢谢!