Effizientes Entfernen von Duplikaten aus einem Array, ohne auf Set zurückgreifen zu müssen
Sie haben versucht, eine maßgeschneiderte Lösung zum Entfernen doppelter Elemente aus einem Array zu erstellen. Es sind jedoch Leistungsengpässe aufgetreten. Um diese Implementierung zu optimieren, analysieren wir die Mängel Ihres Ansatzes und schlagen alternative Strategien vor.
Analyse Ihres Algorithmus
Ihr Algorithmus versucht, durch Vergleich nach Duplikaten zu suchen Element mit jedem nachfolgenden Element. Dieser umfassende Vergleich führt zu einer Zeitkomplexität von O(n^2). Bei großen Arrays kann diese Strategie äußerst ineffizient werden.
Optimierter Ansatz
Um die Leistung deutlich zu verbessern, können wir die folgende Optimierung in Betracht ziehen:
Alternative Lösungen
Während die oben genannten Optimierungen dies können Um die Leistung Ihres Algorithmus zu verbessern, können Sie auch andere etablierte Techniken in Betracht ziehen:
Implementierung
Basierend auf dem optimierten Ansatz, Eine modifizierte Version Ihres Algorithmus, der eine Hash-Map verwendet, könnte sein:
public static int[] removeDuplicatesWithoutSet(int[] arr) { HashMap<Integer, Boolean> map = new HashMap<>(); int end = arr.length; for (int i = 0; i < end; i++) { if (map.containsKey(arr[i])) { int shiftLeft = i; for (int k = i + 1; k < end; k++, shiftLeft++) { arr[shiftLeft] = arr[k]; } end--; i--; } else { map.put(arr[i], true); } } int[] whitelist = new int[end]; for (int i = 0; i < end; i++) { whitelist[i] = arr[i]; } return whitelist; }
Das obige ist der detaillierte Inhalt vonWie kann ich Duplikate effizient aus einem Array entfernen, ohne einen Satz zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!