Episode 7 — DSA with JavaScript / 7.13 — Queue
7.13.a — Queue Implementation & Algorithms
What is a queue?
A queue is a FIFO (First-In, First-Out) data structure.
Enqueue (add) Dequeue (remove)
──▶ ┌───┬───┬───┬───┐ ──▶
│ 4 │ 3 │ 2 │ 1 │
──▶ └───┴───┴───┴───┘ ──▶
rear front
JavaScript — array-based
class Queue {
#items = [];
enqueue(val) { this.#items.push(val); }
dequeue() {
if (this.isEmpty()) throw new Error("Queue underflow");
return this.#items.shift();
}
peek() { return this.#items[0]; }
isEmpty() { return this.#items.length === 0; }
size() { return this.#items.length; }
}
JavaScript — linked list based (O(1) dequeue)
class QueueNode {
constructor(val) { this.val = val; this.next = null; }
}
class LinkedQueue {
#head = null;
#tail = null;
#size = 0;
enqueue(val) {
const node = new QueueNode(val);
if (this.#tail) this.#tail.next = node;
else this.#head = node;
this.#tail = node;
this.#size++;
}
dequeue() {
if (!this.#head) throw new Error("Queue underflow");
const val = this.#head.val;
this.#head = this.#head.next;
if (!this.#head) this.#tail = null;
this.#size--;
return val;
}
peek() { return this.#head?.val; }
isEmpty() { return this.#size === 0; }
size() { return this.#size; }
}
C++
#include <queue>
queue<int> q;
q.push(1); // enqueue
q.front(); // peek
q.pop(); // dequeue
q.empty(); // isEmpty
q.size(); // size
Circular queue
Circular queue (capacity 5):
┌───┬───┬───┬───┬───┐
│ _ │ 2 │ 3 │ 4 │ _ │
└───┴───┴───┴───┴───┘
↑ ↑
front rear
front = 1, rear = 3, size = 3
enqueue: rear = (rear+1) % capacity
dequeue: front = (front+1) % capacity
class CircularQueue {
#data;
#front = 0;
#rear = -1;
#size = 0;
#capacity;
constructor(k) {
this.#capacity = k;
this.#data = new Array(k);
}
enqueue(val) {
if (this.isFull()) return false;
this.#rear = (this.#rear + 1) % this.#capacity;
this.#data[this.#rear] = val;
this.#size++;
return true;
}
dequeue() {
if (this.isEmpty()) return null;
const val = this.#data[this.#front];
this.#front = (this.#front + 1) % this.#capacity;
this.#size--;
return val;
}
peek() { return this.isEmpty() ? null : this.#data[this.#front]; }
isEmpty() { return this.#size === 0; }
isFull() { return this.#size === this.#capacity; }
}
Queue algorithms
BFS (Breadth-First Search)
function bfs(graph, start) {
const visited = new Set([start]);
const queue = [start];
const order = [];
while (queue.length) {
const node = queue.shift();
order.push(node);
for (const neighbor of graph[node] || []) {
if (!visited.has(neighbor)) {
visited.add(neighbor);
queue.push(neighbor);
}
}
}
return order;
}
Level order tree traversal
function levelOrder(root) {
if (!root) return [];
const result = [], queue = [root];
while (queue.length) {
const level = [], size = queue.length;
for (let i = 0; i < size; i++) {
const node = queue.shift();
level.push(node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
result.push(level);
}
return result;
}
Sliding window maximum (deque)
function maxSlidingWindow(nums, k) {
const deque = [], result = [];
for (let i = 0; i < nums.length; i++) {
while (deque.length && deque[0] <= i - k) deque.shift();
while (deque.length && nums[deque[deque.length - 1]] < nums[i]) deque.pop();
deque.push(i);
if (i >= k - 1) result.push(nums[deque[0]]);
}
return result;
}
Applications of queues
- BFS traversal (graphs, trees)
- Task scheduling (printer queue, CPU scheduling)
- Message queues (event-driven systems)
- Sliding window problems
- Cache eviction (FIFO policy)
Scenario bank (queue)
7.13a-001 — Implement queue using two stacks (v1)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-002 — Implement stack using two queues (v2)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-003 — Generate binary numbers 1 to N (v3)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-004 — First non-repeating char in stream (v4)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-005 — Interleave first and second half (v5)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-006 — Reverse first K elements (v6)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-007 — Priority queue implementation (v7)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-008 — Task scheduler simulation (v8)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-009 — Rotting oranges (BFS) (v9)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-010 — Walls and gates (BFS) (v10)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-011 — Number of islands (BFS approach) (v11)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-012 — Shortest path in grid (v12)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-013 — Snake and ladders game (v13)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-014 — Open the lock (BFS) (v14)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-015 — Design hit counter (v15)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-016 — Moving average from data stream (v16)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-017 — Implement deque from scratch (v17)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-018 — Maximum of all subarrays of size K (v18)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-019 — Circular tour problem (v19)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-020 — Process scheduling simulation (v20)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-021 — Implement queue using two stacks (v21)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-022 — Implement stack using two queues (v22)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-023 — Generate binary numbers 1 to N (v23)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-024 — First non-repeating char in stream (v24)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-025 — Interleave first and second half (v25)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-026 — Reverse first K elements (v26)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-027 — Priority queue implementation (v27)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-028 — Task scheduler simulation (v28)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-029 — Rotting oranges (BFS) (v29)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-030 — Walls and gates (BFS) (v30)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-031 — Number of islands (BFS approach) (v31)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-032 — Shortest path in grid (v32)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-033 — Snake and ladders game (v33)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-034 — Open the lock (BFS) (v34)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-035 — Design hit counter (v35)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-036 — Moving average from data stream (v36)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-037 — Implement deque from scratch (v37)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-038 — Maximum of all subarrays of size K (v38)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-039 — Circular tour problem (v39)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-040 — Process scheduling simulation (v40)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-041 — Implement queue using two stacks (v41)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-042 — Implement stack using two queues (v42)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-043 — Generate binary numbers 1 to N (v43)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-044 — First non-repeating char in stream (v44)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-045 — Interleave first and second half (v45)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-046 — Reverse first K elements (v46)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-047 — Priority queue implementation (v47)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-048 — Task scheduler simulation (v48)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-049 — Rotting oranges (BFS) (v49)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-050 — Walls and gates (BFS) (v50)
- Level: Beginner
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-051 — Number of islands (BFS approach) (v51)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-052 — Shortest path in grid (v52)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-053 — Snake and ladders game (v53)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-054 — Open the lock (BFS) (v54)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-055 — Design hit counter (v55)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-056 — Moving average from data stream (v56)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-057 — Implement deque from scratch (v57)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-058 — Maximum of all subarrays of size K (v58)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-059 — Circular tour problem (v59)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-060 — Process scheduling simulation (v60)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-061 — Implement queue using two stacks (v61)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-062 — Implement stack using two queues (v62)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-063 — Generate binary numbers 1 to N (v63)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-064 — First non-repeating char in stream (v64)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-065 — Interleave first and second half (v65)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-066 — Reverse first K elements (v66)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-067 — Priority queue implementation (v67)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-068 — Task scheduler simulation (v68)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-069 — Rotting oranges (BFS) (v69)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-070 — Walls and gates (BFS) (v70)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-071 — Number of islands (BFS approach) (v71)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-072 — Shortest path in grid (v72)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-073 — Snake and ladders game (v73)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-074 — Open the lock (BFS) (v74)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-075 — Design hit counter (v75)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-076 — Moving average from data stream (v76)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-077 — Implement deque from scratch (v77)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-078 — Maximum of all subarrays of size K (v78)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-079 — Circular tour problem (v79)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-080 — Process scheduling simulation (v80)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-081 — Implement queue using two stacks (v81)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-082 — Implement stack using two queues (v82)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-083 — Generate binary numbers 1 to N (v83)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-084 — First non-repeating char in stream (v84)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-085 — Interleave first and second half (v85)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-086 — Reverse first K elements (v86)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-087 — Priority queue implementation (v87)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-088 — Task scheduler simulation (v88)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-089 — Rotting oranges (BFS) (v89)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-090 — Walls and gates (BFS) (v90)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-091 — Number of islands (BFS approach) (v91)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-092 — Shortest path in grid (v92)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-093 — Snake and ladders game (v93)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-094 — Open the lock (BFS) (v94)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-095 — Design hit counter (v95)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-096 — Moving average from data stream (v96)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-097 — Implement deque from scratch (v97)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-098 — Maximum of all subarrays of size K (v98)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-099 — Circular tour problem (v99)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-100 — Process scheduling simulation (v100)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-101 — Implement queue using two stacks (v101)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-102 — Implement stack using two queues (v102)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-103 — Generate binary numbers 1 to N (v103)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-104 — First non-repeating char in stream (v104)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-105 — Interleave first and second half (v105)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-106 — Reverse first K elements (v106)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-107 — Priority queue implementation (v107)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-108 — Task scheduler simulation (v108)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-109 — Rotting oranges (BFS) (v109)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-110 — Walls and gates (BFS) (v110)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-111 — Number of islands (BFS approach) (v111)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-112 — Shortest path in grid (v112)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-113 — Snake and ladders game (v113)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-114 — Open the lock (BFS) (v114)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-115 — Design hit counter (v115)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-116 — Moving average from data stream (v116)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-117 — Implement deque from scratch (v117)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-118 — Maximum of all subarrays of size K (v118)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-119 — Circular tour problem (v119)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-120 — Process scheduling simulation (v120)
- Level: Intermediate
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-121 — Implement queue using two stacks (v121)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-122 — Implement stack using two queues (v122)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-123 — Generate binary numbers 1 to N (v123)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-124 — First non-repeating char in stream (v124)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-125 — Interleave first and second half (v125)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-126 — Reverse first K elements (v126)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-127 — Priority queue implementation (v127)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-128 — Task scheduler simulation (v128)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-129 — Rotting oranges (BFS) (v129)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-130 — Walls and gates (BFS) (v130)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-131 — Number of islands (BFS approach) (v131)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-132 — Shortest path in grid (v132)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-133 — Snake and ladders game (v133)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-134 — Open the lock (BFS) (v134)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-135 — Design hit counter (v135)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-136 — Moving average from data stream (v136)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-137 — Implement deque from scratch (v137)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-138 — Maximum of all subarrays of size K (v138)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-139 — Circular tour problem (v139)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-140 — Process scheduling simulation (v140)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-141 — Implement queue using two stacks (v141)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-142 — Implement stack using two queues (v142)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-143 — Generate binary numbers 1 to N (v143)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-144 — First non-repeating char in stream (v144)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-145 — Interleave first and second half (v145)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-146 — Reverse first K elements (v146)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-147 — Priority queue implementation (v147)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-148 — Task scheduler simulation (v148)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-149 — Rotting oranges (BFS) (v149)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-150 — Walls and gates (BFS) (v150)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-151 — Number of islands (BFS approach) (v151)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-152 — Shortest path in grid (v152)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-153 — Snake and ladders game (v153)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-154 — Open the lock (BFS) (v154)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-155 — Design hit counter (v155)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-156 — Moving average from data stream (v156)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-157 — Implement deque from scratch (v157)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-158 — Maximum of all subarrays of size K (v158)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-159 — Circular tour problem (v159)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-160 — Process scheduling simulation (v160)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-161 — Implement queue using two stacks (v161)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-162 — Implement stack using two queues (v162)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-163 — Generate binary numbers 1 to N (v163)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-164 — First non-repeating char in stream (v164)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-165 — Interleave first and second half (v165)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-166 — Reverse first K elements (v166)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-167 — Priority queue implementation (v167)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-168 — Task scheduler simulation (v168)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-169 — Rotting oranges (BFS) (v169)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.
7.13a-170 — Walls and gates (BFS) (v170)
- Level: Advanced
- Approach: Apply technique.
- Time/Space: Analyze.
- Edge cases: empty, single, boundary.
- JS & C++: Both.