N個の整数を含む配列Aが「マスター要素」を持っているかどうかを調べようとしています。この配列のマスター要素は、配列のn/2回以上出現する要素です。例えば配列内のマスター要素を見つける効率的なアルゴリズム?
:
- アレイ
A={5,1,3,5,5}
(この場合5)マスター要素を有しています。 - アレイ
A={5,1,2,3,3}
にはマスター要素がありません。
これまでのところ私のコードです。
この問題を解決する最も効率的なアルゴリズムは何ですか?
配列にマスター要素がある場合、アルゴリズムはtrue
を返し、マスター要素がない場合はfalse
を返す必要があります。
boolean masterElement(int[] a) {
int count = 0;
boolean check = false;
for (int i = 0; i < a.length/2; i++) {
for (int j = 0; j < a.length; j++) {
if (a[i] == a[j]) {
count++;
}
}
if (count >= a.length/2) {
check = true;
break;
}
count = 0;
}
return check;
}
これまでに試したことはありますか? – Sanjeev
あなたは自分でそれを最初に試してみませんか? –
私の数学の知識は謝りますが、それはマスターの要素が配列で3回以上言及されていることを意味しますか? – kiradotee