int findMaxCount(int[] data1, int[] data2)
{
int ind1=0;
int ind2=0;
int last = 0;
int lastCount = 0;
int max = 0;
int maxCount = 0;
while(ind1 < data1.Length || ind2 < data2.Length)
{
int cur = 0;
if (ind1 == data1.Length)
cur = data2[ind2++];
else if (ind2 == data2.Length)
cur = data1[ind1++];
else if (data1[ind1] < data2[ind2])
cur = data1[ind1++];
else
cur = data2[ind2++];
if (cur == last) lastCount++;
else
{
if (lastCount > maxCount)
{
maxCount = lastCount;
max = last;
}
last = cur;
lastCount = 1;
}
}
if (lastCount > maxCount)
{
maxCount = lastCount;
max = last;
}
return max;
}
两个指针和一个盒子在帽子里
考试
结论
有一个相当著名的归并排序算法。它有一个合并阶段,当给定两个排序数组时,必须将它们组合成一个排序数组。
这是应该使用的算法。您只需要记住最后一个元素并计算它遇到的次数,而不是写入数组。并且如果当前与前一个不一致,那么我们检查是否需要更新结果。