Wie überprüfe ich ob eine Zahl in einem Array nur einmal enthalten ist?
2 Antworten
Indem du das Array durchgehst, für jede neu enddeckte Zahl ein Listenelement an eine "endeckt"-Liste (verkettete Liste) mit Inhalt 1 anfügst, fallos eine Zahl schon im Array ist, erhöhst du das entsprechende Element in der List um 1 -- so bekommst du nebenbei noch heraus, wie oft eine Zahl in dem Array ist.
(Listenelement für Zahl3) endeckt.zahl[0] = 3; (Anzahl für Zahl3) endeckt.zahl[1] = 2
dann nächstest Element usw.
Eine eher hässliche Lösung (sprich ein jeder-mit-jedem-Vergleich) wäre im Pseudocode
boolean isDuplicateUgly(input:Array<integer> {
for (int i = 0; i < input.length - 1; i++) {
for (int j = (i+1); j < input.length; j++) {
if (input[i] == input[j]) {
return false;
}
}
}
return true;
}
-----------
Du könntest stattdessen als erstes das Array sortieren (falls es noch nicht sortiert ist). Danach (also input ist ein sortiertes Array!) könntest du das mit folgender Funktion prüfen.
boolean isDuplicate (input:Array<integer> {
for (int i = 0; i < input.length - 1; i++) {
if (input[i] == input[i+1] {
return false;
}
}
return true;
}
-----------
Als nächster Schritt wäre dann eine Idee zu prüfen, ob du schon während des Sortieralgorithmus erkennen kannst, ob du Zahlen doppelt hast.