当前位置:  开发笔记 > 编程语言 > 正文

查找给定数字组中的数字频率

如何解决《查找给定数字组中的数字频率》经验,为你挑选了2个好方法。

假设我们在C++中有一个向量/数组,我们希望计算这N个元素中哪一个具有最大重复次数并输出最高计数.哪种算法最适合这项工作.

例:

int a = { 2, 456, 34, 3456, 2, 435, 2, 456, 2}

输出为4,因为2次出现4次.这是2次发生的最大次数.



1> Franci Penov..:

对数组进行排序,然后快速传递以计算每个数字.该算法具有O(N*logN)复杂度.

或者,使用数字作为键创建哈希表.在哈希表中存储您键入的每个元素的计数器.你将能够在一次通过中计算所有元素; 但是,算法的复杂性现在取决于哈希函数的复杂性.


O(N + N*logN)= O(N*logN)

2> Sklivvz..:

针对空间进行优化:

Quicksort(例如)然后遍历项目,仅跟踪最大计数.最好是O(N log N).

针对速度进行了优化:

迭代所有元素,跟踪单独的计数.该算法将始终为O(n).

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有