Peek Top Element of Stack in DSA Javascript - Time & Space Complexity
We want to understand how long it takes to look at the top item of a stack without removing it.
How does the time needed change as the stack grows bigger?
Analyze the time complexity of the following code snippet.
function peek(stack) {
if (stack.length === 0) {
return null; // stack is empty
}
return stack[stack.length - 1];
}
This code returns the top element of the stack if it exists, otherwise returns null.
- Primary operation: Accessing the last element of the array (stack).
- How many times: Exactly once per peek call, no loops or recursion.
Looking at the top element takes the same amount of time no matter how big the stack is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The time stays constant as the stack grows.
Time Complexity: O(1)
This means peeking the top element takes the same short time no matter how many items are in the stack.
[X] Wrong: "Peeking takes longer if the stack is bigger because it has to check many elements."
[OK] Correct: Peeking only looks at the last item directly without scanning the stack, so size does not affect time.
Knowing that peek is a quick, constant-time operation helps you explain stack behavior clearly and confidently in interviews.
"What if the stack was implemented as a linked list instead of an array? How would the time complexity of peek change?"
Practice
peek operation do in a stack?Solution
Step 1: Understand stack operations
A stack stores elements with last-in, first-out order. Peek shows the top element without removing it.Step 2: Differentiate peek from pop
Pop removes and returns the top element, peek only returns it without removal.Final Answer:
Returns the top element without removing it -> Option AQuick Check:
Peek = top element without removal [OK]
- Confusing peek with pop operation
- Thinking peek adds elements
- Assuming peek checks emptiness
stack in JavaScript?Solution
Step 1: Understand JavaScript array indexing
JavaScript arrays use zero-based indexing. The last element is at index length - 1.Step 2: Identify correct peek syntax
To peek, access the last element without removing it: stack[stack.length - 1]. stack.pop() removes the element, stack.peek() and stack.top() are not default methods.Final Answer:
stack[stack.length - 1] -> Option CQuick Check:
Peek = stack[stack.length - 1] [OK]
- Using stack.pop() which removes element
- Using non-existent methods like peek() or top()
- Accessing stack[stack.length] which is undefined
const stack = [10, 20, 30]; const top = stack[stack.length - 1]; console.log(top);
Solution
Step 1: Identify the stack elements and length
The stack array is [10, 20, 30]. Its length is 3.Step 2: Calculate the top element index and value
stack.length - 1 = 3 - 1 = 2. stack[2] is 30.Final Answer:
30 -> Option BQuick Check:
Top element = 30 [OK]
- Using stack[stack.length] which is undefined
- Confusing first element with top element
- Printing stack.pop() instead of peek
const stack = [5, 15, 25];
function peek() {
return stack[stack.length];
}
console.log(peek());Solution
Step 1: Analyze the peek function index
stack.length returns the number of elements, but array indices go from 0 to length - 1.Step 2: Correct the index to access top element
Use stack.length - 1 to get the last element. Using stack.length returns undefined.Final Answer:
stack.length should be stack.length - 1 -> Option AQuick Check:
Index = length - 1 for top element [OK]
- Using stack.length as index causing undefined
- Thinking peek removes element
- Missing parentheses in console.log (not in this code)
function safePeek(stack) {
// Your code here
}Solution
Step 1: Check if stack is empty
Before accessing the top element, verify stack length is greater than zero to avoid undefined access.Step 2: Return top element or null safely
If stack is not empty, return stack[stack.length - 1], else return null to indicate empty stack.Final Answer:
return stack.length > 0 ? stack[stack.length - 1] : null; -> Option DQuick Check:
Safe peek uses length check and conditional [OK]
- Accessing stack[stack.length] causing undefined
- Using pop which removes element
- Returning stack[0] which is bottom, not top
Ready to prove it?
Pass the test and this pattern moves unknown
