typescript / intermediate
Snippet
In-Place-Array-Deduplizierung mittels Zwei-Zeiger-Technik
Die Zwei-Zeiger-Technik ermöglicht die Modifikation von Array-Elementen in-place, ohne temporäre Ausweich-Arrays oder Set-Instanzen zu allokieren. Das direkte Anpassen der Array-Länge schneidet verbleibende Duplikate in O(n)-Zeit ab.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
function deduplicateSortedArray<T extends string | number>(items: T[]): T[] {if (items.length <= 1) return items;let writeIndex = 1;for (let readIndex = 1; readIndex < items.length; readIndex++) {if (items[readIndex] !== items[writeIndex - 1]) {items[writeIndex] = items[readIndex];writeIndex++;}}items.length = writeIndex;return items;}
Erklärung
1
function deduplicateSortedArray<T extends string | number>(items: T[]): T[] {
Definiert eine generische Funktion, die ein sortiertes Array primitiver Werte entgegennimmt und in-place verändert.
2
let writeIndex = 1;
Initialisiert den Schreib-Zeiger, um die Position eindeutiger Elemente zu verfolgen.
3
if (items[readIndex] !== items[writeIndex - 1]) {
Vergleicht das aktuelle Lese-Element mit dem zuletzt geschriebenen eindeutigen Element.
4
items.length = writeIndex;
Kürzt das Array direkt in-place, um verbleibende Duplikate ohne Neu-Allokation zu entfernen.