我需要编写一个遍历已排序的单链表的metod并返回 显示次数最多但仅在列表中显示一次的数字。
有人能指出我正确的方向吗?
还不能找到一个优雅的解决方案,我应该使用递归吗?
我希望代码尽可能高效。
提前致谢。
答案 0 :(得分:0)
您可以使用HashMap<index,count>
遍历链表
如果你找到相同的号码然后计算
最后检查哪个计数很好并返回其索引。
答案 1 :(得分:0)
public int findMoreRecurrentValue(List<Integer> sortedList) {
if(sortedList.size() == 0) return -1;
int mostRecurrent = -1;
int nReccurrences = 0;
int n = 1;
int current = sortedList.get(0);
for(int i = 1; i < sortedList.size(); ++i) {
if(sortedList.get(i) == current)
++n;
else {
if(n > nReccurrences) {
mostRecurrent = current;
nReccurrences = n;
}
current = sortedList.get(i);
n = 1;
}
}
// Check again at the end, the most reccurrent value could be the last one.
if(n > nReccurrences) {
mostRecurrent = current;
nReccurrences = n;
}
return mostRecurrent;
}