我希望在线性时间内找到元素在大数组中出现的最大次数。我正在通过moores投票算法页面。 http://www.cs.utexas.edu/~moore/best-ideas/mjrty/example.html。我认为moore建议的算法会给出不正确的结果,比如数组是AAACCBCCCCBDAEFF。它将给出F作为元素在数组中出现的最大次数。 plz点我错了,plz建议一些线性时间算法,而不使用哈希映射。
答案 0 :(得分:1)
假设你有abcdefghijklmnopqrstuvwxyzf。
要确定f为多数元素,您必须将其保留在内存中,但在达到第二个f之前,您没有任何特殊原因这样做。所以这意味着如果你将第一个f保留在内存中,你还保留了其他字母(其中26个),基本上它等于使用哈希值。
我认为不可能做你想做的事。