我试图为O(n)算法编写伪代码,该算法搜索排序数组中最常出现的元素。
对数据结构和算法非常陌生,我已经有两年半没有编码了。我已经阅读了一些关于这个主题的文章,我相信我正在理解这些概念,但是我正在努力解决上面的问题。
到目前为止,这就是我所拥有的一切,我正在努力获得期望的结果,而没有第二个“for”循环,这使算法成为一个O(n^2),我相信,我不确定我将如何处理多个频繁出现的元素。
如能得到任何帮助或指导,我将不胜感激。
A=[i];
Elem=0;
Count=0;
For (i=0; j< A[n-1]; j++);
tempElem=A[j];
empCount=0;
for(p=0; p<A[n-1; p++])
If(A[p]==tempElem)
tempCount++:
if(tempCount>Count);
Elem==tempElem:
Count=tempCount;
Print(“The most frequent element of array A is”: Elem “as it appears” Count “times”)
最佳答案
内环不是你的朋友。:-)
你的循环体应该只输入两个逻辑位:
这个元素和前面的一样吗?
如果是,则增加当前项(curr_count
)的计数并转到下一个元素。
否则,请检查到目前为止最好的如果更好,那么使用前面的元素并计算新的“最佳”数据。
不管怎样,将count设置回1并转到下一个元素。
关于arrays - O(n)线性搜索数组中最常见的项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47213118/