Deque

O(1)
addFirst, addLast, removeFirst, removeLast

Python

# Stack
s = deque()
s.append(1); # 1
s.append(2); # 1,2
s.append(3); # 1,2,3
s.pop(); # 1,2
s.pop(); # 1
view raw DequeAsStack.py hosted with ❤ by GitHub
# Queue
q = deque()
q.append(1); # 1
q.append(2); # 1,2
q.append(3); # 1,2,3
q.popleft(); # 2,3
q.popleft(); # 3
view raw DequeAsQueue.py hosted with ❤ by GitHub
# LinkedList
ll = deque()
ll.append(1); # 1
ll.append(2); # 1,2
ll.appendleft(0); # 0,1,2
ll.pop(); # 0,1
ll.popleft(); # 1
// Stack
Deque<Integer> s = new ArrayDeque<>();
s.addLast(1); // 1
s.addLast(2); // 1,2
s.addLast(3); // 1,2,3
s.removeLast(); // 1,2
s.removeLast(); // 1
// Queue
Deque<Integer> q = new ArrayDeque<>();
q.addLast(1); // 1
q.addLast(2); // 1,2
q.addLast(3); // 1,2,3
q.removeFirst(); // 2,3
q.removeFirst(); // 3
// LinkedList
Deque<Integer> ll = new ArrayDeque<>();
ll.addLast(1); // 1
ll.addLast(2); // 1,2
ll.addFirst(0); // 0,1,2
ll.removeLast(); // 0,1
ll.removeFirst(); // 1

Tricks

Deque

 
Previous
Previous

Trie