Peek Front Element of Queue in DSA Javascript - Time & Space Complexity
We want to understand how long it takes to look at the front item in a queue.
Specifically, how does the time change as the queue grows bigger?
Analyze the time complexity of the following code snippet.
class Queue {
constructor() {
this.items = [];
}
peek() {
return this.items[0];
}
}
This code defines a queue and a method to look at the front element without removing it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing the first element of an array.
- How many times: Exactly once per peek call, no loops or recursion.
Looking at the front element takes the same time no matter how big the queue is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The time stays constant as the queue grows.
Time Complexity: O(1)
This means peeking at the front element takes the same short time no matter how many items are in the queue.
[X] Wrong: "Peeking takes longer if the queue is bigger because it has to check many items."
[OK] Correct: Peeking only looks at the first item directly, so it does not depend on queue size.
Knowing that peek is a quick, constant-time operation helps you explain queue efficiency clearly in interviews.
"What if the queue was implemented using a linked list instead of an array? How would the time complexity of peek change?"
Practice
peek operation do in a queue?Solution
Step 1: Understand the peek operation
The peek operation looks at the front element of the queue but does not remove it.Step 2: Compare with other queue operations
Removing is done by dequeue, adding by enqueue, and checking empty is a separate check.Final Answer:
Returns the front element without removing it -> Option AQuick Check:
Peek = front element without removal [OK]
- Confusing peek with dequeue
- Thinking peek adds elements
- Assuming peek checks emptiness
myQueue in JavaScript if it is implemented as an array?Solution
Step 1: Understand array-based queue front access
In JavaScript, arrays use index 0 for the first element, somyQueue[0]accesses the front.Step 2: Check other options for validity
Methods likepeek(),front(), orgetFront()are not standard array methods.Final Answer:
myQueue[0] -> Option BQuick Check:
Array front element = index 0 [OK]
- Using non-existent methods on arrays
- Using wrong index like myQueue[1]
- Confusing peek with dequeue method
const queue = []; queue.push(10); queue.push(20); queue.push(30); console.log(queue[0]);
Solution
Step 1: Understand queue insertion using push
Elements 10, 20, 30 are added to the end of the array, so queue = [10, 20, 30].Step 2: Access front element using index 0
queue[0] returns the first element, which is 10.Final Answer:
10 -> Option AQuick Check:
Front element after pushes = 10 [OK]
- Thinking last pushed element is front
- Using queue.pop() instead of queue[0]
- Confusing index 0 with index 1
const queue = [5, 15, 25];
function peek() {
return queue.pop();
}
console.log(peek());Solution
Step 1: Understand pop() behavior on arrays
pop() removes and returns the last element, not the front.Step 2: Correct way to peek front element
To peek front, access queue[0] without removing it.Final Answer:
Using pop() removes the last element instead of peeking the front -> Option DQuick Check:
pop() removes last, not front [OK]
- Using pop() to peek front
- Confusing pop() with shift()
- Trying to push in peek function
let q = [100, 200, 300]. You want to peek the front element safely, but the queue might be empty sometimes. Which code snippet correctly peeks the front element without causing an error?Solution
Step 1: Check for empty queue before peeking
Accessing q[0] when empty returns undefined but may be unclear; better to check length.Step 2: Use conditional to safely peek front
Usingq.length > 0 ? q[0] : 'Queue is empty'returns front if exists, else message.Final Answer:
console.log(q.length > 0 ? q[0] : 'Queue is empty'); -> Option CQuick Check:
Safe peek uses length check before access [OK]
- Peeking without checking empty queue
- Using pop() or shift() which remove elements
- Assuming q[0] always exists
Ready to prove it?
Pass the test and this pattern moves unknown
