之前,有在 如何找出数组中重复的元素 整理过如何找数组中找到重复出现的数字。
今天遇到这样一个需求,数组中所有的元素的值都在[08]之间,且都是整数,我需要找出出现次数最多的元素。这个问题可以用 如何找出数组中重复的元素 提出的方法来解决,我是使用位向量的方法来解决的,算法的时间复杂度为[latex]O(n) [/latex],代码如下:
运行结果输出1。
我在谷歌上搜索了该问题,发现这个问题的两个扩展。
第1个扩展:要求时间复杂度为[latex]O(n)[/latex],且不使用辅助空间。在开源中国社区的讨论区中,一道数组面试题-不能使用辅助空间找重复次数的数给出了多种解法,都很有技巧性,甚至是太有技巧了,不过有一个解法简单:
print arr
其实,就是在原先的数组中使用位向量的方法。上面代码的运行结果:
**第2个扩展:**求出现次数最多的最大数。也就是说可能有多个数出现的次数都是最多的,取最大的数字,这个很简单,不介绍了。
