This is a sample problem using a Linked List.
Add something to the Linked List!
The duplicate removal algorithm is implemented with an O(n) solution using a Map:
class LinkedList {
...
removeDuplicates() {
let previouslySeen = new Map();
let iterations = this.count;
let current = this.head;
let prev = this.head;
for (let i = 0; i < iterations; i++) {
if (previouslySeen.has(current.value)) {
if (current.next) {
prev.next = current.next;
} else {
prev.next = null;
}
this.decrementCount();
} else {
previouslySeen.set(current.value, current);
prev = current;
}
current = current.next;
}
}
...
}