Linked-List Queue with Delete and Deduplication
Problem statement
Implement a queue whose state is stored in a hand-built singly linked list. The queue starts empty. Process operations from left to right, using the integer at the same index in values when an operation needs an argument.
The supported operations are:
enqueue: append a new node containingvalues[i]at the tail inO(1)time.dequeue: remove the head inO(1)time and append its value to the result.delete: remove the first node, from the head, whose value equalsvalues[i]. If no node matches, leave the queue unchanged.removeAllDuplicates: retain the first occurrence of every value and remove all later occurrences, preserving the relative order of the retained nodes.
Return the values produced by dequeue operations in encounter order. The value paired with dequeue or removeAllDuplicates is ignored.
Examples
Example 1
operations = ["enqueue","enqueue","enqueue","enqueue","enqueue","removeAllDuplicates","dequeue","delete","dequeue"]values = [3,1,3,2,1,0,0,1,0]return = [3,2]Deduplication changes [3,1,3,2,1] to [3,1,2]. The first dequeue returns 3, deletion removes the first 1, and the final dequeue returns 2.
Unlock this recently reported problem
FastPrep Pro gives you full access to interview problems reported within the last week.
- Full problem statement and constraints
- 2 more worked examples, explained
- Guided hints and editorial
- Run your code on real test cases
$99 billed yearly — or $19 month-to-month. Cancel anytime.