Ich versuche herauszufinden, ob ein gegebenes Array A mit N ganzen Zahlen ein "Master-Element" hat. Das Master-Element dieses Arrays ist ein Element, das im Array mehr als n/2 Mal vorkommt.Effizienter Algorithmus, um Master-Element in einem Array zu finden?
Zum Beispiel:
- das Array
A={5,1,3,5,5}
hat ein Master-Element (in diesem Fall 5). - das Array
A={5,1,2,3,3}
hat kein Master-Element.
Unten ist mein Code so weit.
Ich würde gerne wissen, was ist der effizienteste Algorithmus, um dieses Problem zu lösen?
Der Algorithmus muss true
zurückgeben, wenn das Array ein Masterelement hat und false
zurückgibt, wenn es kein Masterelement hat.
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;
}
Was haben Sie bisher versucht? – Sanjeev
Warum versuchst du es nicht zuerst selbst? –
Entschuldigung für meine mathematischen Kenntnisse, aber bedeutet das, dass das Master-Element derjenige ist, der 3 oder mehr Mal im Array erwähnt wird? – kiradotee