我想在数组中找到大多数(大多数时间出现的数字)。我有一个排序数组并使用这些循环:
for(int k = 1;k < length;k++)
{
if(arr[k-1] == arr[k])
{
count++;
if(count > max)
{
max = count;
maxnum = arr[k-1];
}
} else {
count = 0;
}
}
或者
for(int h=0;h<length;h++)
{
for(int l=1;l<length;l++)
{
if(arr[h] == arr[l])
{
count++;
if(count > max)
{
max = count;
maxnum = arr[h];
}
} else count = 0;
}
}
他们是相似的。当我在小型阵列上尝试它们时,一切似乎都很好。但是在具有 N 个元素 0<=N<=500000 的长期数组中,每个元素 K 0<=K<=10^9 他们给出错误的答案。这是错误的解决方案http://ideone.com/y2gvnX。我知道有更好的算法可以找到多数,但我只需要知道我的错误在哪里。
我真的找不到它:(非常感谢帮助!