Peek Top Element of Stack in DSA C# - 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.
public class Stack
{
private int[] items;
private int top = -1;
public int Peek()
{
if (top == -1) throw new InvalidOperationException("Stack is empty");
return items[top];
}
}
This code returns the top element of the stack without removing it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing the element at the top index in the array.
- How many times: Exactly once per peek call.
Looking at the top element always 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 the same even if the stack grows larger.
Time Complexity: O(1)
This means peeking the top element takes a fixed amount of time regardless of stack size.
[X] Wrong: "Peeking takes longer if the stack has more items because it has to check many elements."
[OK] Correct: Peeking only looks at the top element directly, so it does not depend on the number of items.
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 using a linked list instead of an array? How would the time complexity of peek change?"
Practice
Peek() method do in a stack?Solution
Step 1: Understand the Peek method purpose
The Peek method is designed to look at the top element of the stack without changing the stack itself.Step 2: Differentiate from Pop method
Unlike Pop, Peek does not remove the element; it only returns it.Final Answer:
Returns the top element without removing it -> Option AQuick Check:
Peek() returns top element without removal [OK]
- Confusing Peek with Pop
- Thinking Peek adds elements
- Assuming Peek empties the stack
myStack in C#?Solution
Step 1: Recall Stack method names in C#
The Stack class in C# uses Peek() to look at the top element without removing it.Step 2: Verify method correctness
Top(), GetTop() are not valid Stack methods; Pop() removes the element.Final Answer:
var top = myStack.Peek(); -> Option CQuick Check:
Peek() is correct syntax for top element [OK]
- Using Pop() instead of Peek()
- Using non-existent methods like Top()
- Missing parentheses after Peek
Stack<int> numbers = new Stack<int>(); numbers.Push(10); numbers.Push(20); numbers.Push(30); Console.WriteLine(numbers.Peek()); Console.WriteLine(numbers.Count);
Solution
Step 1: Trace the Push operations
Elements pushed in order: 10, then 20, then 30. Stack top is 30.Step 2: Evaluate Peek and Count
Peek returns top element 30 without removing it. Count remains 3 as no Pop occurred.Final Answer:
30 3 -> Option BQuick Check:
Peek = 30, Count = 3 [OK]
- Assuming Peek removes element
- Confusing Count after Peek
- Mixing order of pushed elements
Stack<string> stack = new Stack<string>(); string top = stack.Peek; Console.WriteLine(top);
Solution
Step 1: Check method call syntax
Peek is a method and must be called with parentheses: Peek()Step 2: Identify error type
Using Peek without parentheses causes a compile-time syntax error.Final Answer:
Peek is used without parentheses, causing a syntax error -> Option DQuick Check:
Method calls need () [OK]
- Forgetting parentheses on Peek
- Assuming Peek removes element
- Thinking Console.WriteLine can't print strings
Stack<char> letters with elements 'a', 'b', 'c' pushed in that order, write the output after this code:
char top1 = letters.Peek(); letters.Pop(); char top2 = letters.Peek(); Console.WriteLine(top1); Console.WriteLine(top2); Console.WriteLine(letters.Count);
Solution
Step 1: Trace initial stack and first Peek
Stack after pushes: bottom 'a', then 'b', top 'c'. Peek() returns 'c' as top1.Step 2: Pop removes top element 'c'
After Pop(), top 'c' is removed. Stack top is now 'b'.Step 3: Second Peek returns 'b' as top2
Peek() now returns 'b'. Count is 2 because one element was removed.Final Answer:
c b 2 -> Option AQuick Check:
Peek then Pop then Peek updates top correctly [OK]
- Assuming Peek removes element
- Confusing order of elements after Pop
- Miscounting stack size after Pop
Ready to prove it?
Pass the test and this pattern moves unknown
