arrays - 时间 O(n) 中数组内元素的频率算法

标签 arrays algorithm

我想请问有没有一种算法可以找到,在一个长度为n的数组中,是否有一个数组元素具有一定的频率百分比(10%、20%等。 .) 在线性时间内。

选择排序是O(n^2),多数算法即使O(n)也只能找到数字是否重复至少n/2次.

最佳答案

假设你没有空间限制,你把它弄得比实际要难得多。

想法是迭代数组并在这样做时保存每个元素的计数。字典(或等效结构)查找的复杂度为 O(1),所以这不是问题。
然后遍历字典并查看哪些元素具有所需的频率。

Python 伪代码:

for elem in array:
    count[elem] = count.get(elem, 0) + 1
for elem, elem_count in count.items():
    if 0.20 <= float(elem_count) / len(array) <= 0.25:
        print "{} has a frequency between 20% and 25%".format(elem)

关于arrays - 时间 O(n) 中数组内元素的频率算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24881533/

相关文章:

python - 如何将数组从 dtype=object 转换为 dtype=np.int

javascript - 从 AngularJS 中的 json 对象绑定(bind)选择下拉列表

algorithm - 更改二叉树的数字基数

java - 遍历树找到节点

计算字符串中的单词出现次数

javascript - 在 PHP 中以不完整的格式接收 JSON 数据?

javascript - 使用 querySelector 在 for 循环中获取属性

java - 数的质因数

c++ - 集群地形图通过 map /矩阵与河流不相交?

javascript - 插入数组后输出[Obj Obj]、[Obj Obj]