配列(ほとんどの場合に表示される数値)で過半数を見つけたい。私はソートされた配列を持っており、これらのサイクルを使用しています:
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の解決策です。過半数を見つけるためのより良いアルゴリズムがあることは知っていますが、どこが間違っているのかを知る必要があります。
私は本当にそれを見つけることができません:(本当に助けていただければ幸いです!