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.


Mikkey  26.05.2016, 20:01

Marvin will aber wissen, ob eine Zahl nur einmal vorkommt.

0