一道笔试题,时间复杂度要求O(N)
int数组中有三个元素出现的次数超过元素总个数的1/4,在规定时间复杂度下,求出这三个数。
我的思路,交卷的一刹那,我发现自己考虑非常不全面。
定义三个变量,保存三个数,在定义三个计数器,开始把a[0],a[1],a[2]赋给三个变量(这里有问题,万一重复了),然后对后面的数组扫描,出现相等的计数器加一,不相等计数器减一。
已经通知下午2点面试,晚上再跟大家探讨下,这题其实跟数组中有元素超过数组一半是一类问题吧,可能考虑起来要复杂点。
请用C/C++实现,Java我不熟。
//多谢@ zonxin @brayden 这是编程之美 寻找发帖水王扩展问题,代码如下,参考网址