I used to take 90 minutes to solve Medium problems. Sometimes longer. I'd stare at the screen, try random approaches, and eventually Google the solution.
After 6 months of deliberate practice, I got that down to 25-30 minutes for most Mediums. The difference wasn't raw intelligence—it was technique.
Speed matters in interviews. You typically get 45 minutes per problem, including discussion. If you can't reach a working solution in 25-30 minutes, you won't have time for optimization, edge cases, or follow-up questions.
Here's what I learned about getting faster—and what doesn't work.
One-Minute Decision: What's Slowing You Down
If you can't start problems (blank page syndrome):
You're missing pattern recognition. Focus on learning patterns, not grinding random problems.
If you start okay but get stuck midway:
You're probably overcomplicating. Practice the "brute force first, optimize second" approach.
If you solve problems but too slowly:
Your implementation speed is the bottleneck. Practice typing solutions without looking anything up.
If you run out of time debugging:
You're writing buggy code. Slow down during implementation to prevent errors, not fix them.
If you freeze when the problem is novel:
You need more pattern exposure. 100+ curated problems, not random grinding.
How Fast Should You Be? (Realistic Benchmarks)
Target Times for Interview Readiness
| Difficulty | Target Time | What That Includes |
|---|---|---|
| Easy | 10-15 min | Understand, code, test, discuss complexity |
| Medium | 20-30 min | Understand, approach, code, test, discuss |
| Hard | 35-45 min | Same, but interviewer often helps guide you |
Where Your Time Should Go
For a 25-minute Medium problem:
| Phase | Time | What's Happening |
|---|---|---|
| Read + Understand | 2-3 min | Clarify inputs, outputs, constraints |
| Think + Approach | 5-7 min | Identify pattern, discuss with interviewer |
| Code | 10-12 min | Implement solution |
| Test + Debug | 5-8 min | Walk through example, fix bugs |
The key insight: If your "Think" phase takes 15+ minutes, you'll run out of time for implementation. Pattern recognition needs to be fast.
How to Measure Your Current Speed
Simple tracking method:
- Start a timer when you read the problem
- Stop when your solution passes all test cases
- Log: Problem name, difficulty, time, whether you needed hints
Do this for 20 problems. Calculate your average by difficulty. That's your baseline.
Why You're Slow: The 5 Most Common Causes
Cause #1: Missing Pattern Recognition
The symptom:
You read a problem and have no idea how to start. You try random approaches—brute force loops, hoping something works.
Why it happens:
You haven't internalized the common patterns. There are ~14-16 core patterns that appear in 90% of interview problems. Without them, every problem feels new.
The fix:
Study patterns explicitly. NeetCode organizes problems by pattern. Do 5-10 problems per pattern before moving on.
The core patterns to know:
- Two Pointers
- Sliding Window
- Fast & Slow Pointers
- Hash Map (counting, lookup)
- Stack (monotonic, matching)
- Binary Search
- BFS/DFS (trees)
- BFS/DFS (graphs)
- Backtracking
- Dynamic Programming (1D, 2D)
- Heap/Priority Queue
- Greedy
- Intervals
- Trie (for string problems)
Time to fix: 4-6 weeks of pattern-focused practice
Cause #2: Jumping to Optimization Too Early
The symptom:
You spend 20 minutes trying to find the optimal solution without writing any code. Then you run out of time.
Why it happens:
You're trying to be smart instead of systematic. In interviews, a working brute force is better than an incomplete optimal solution.
The fix:
Always start with brute force. Code it. Then optimize if time permits.
The process:
- Think of the simplest solution that works (even if O(n²) or worse)
- Verbally explain it to the interviewer
- If they say "okay, code it," code it
- If they push for better, THEN optimize
Why this works:
- You have working code early (reduces stress)
- The brute force often reveals optimization paths
- Interviewers can give hints if you're stuck on optimization
Cause #3: Slow Implementation
The symptom:
You know the approach but take 20+ minutes to code it. You look things up (syntax, library functions). You make typos. You write code, then rewrite it.
Why it happens:
Implementation isn't muscle memory yet. You're thinking about syntax instead of logic.
The fix:
Practice typing solutions from scratch. After solving a problem, close the solution and re-implement it from memory. Do this until it's automatic.
The drill:
- Solve a problem
- Wait 30 minutes
- Re-implement without looking
- Repeat until you can write it in 5 minutes
Focus areas for speed:
- Common patterns (two-pointer loop, BFS template, etc.)
- Language-specific idioms (Python list comprehensions, etc.)
- Edge case templates (empty array, single element, etc.)
Cause #4: Debugging Takes Forever
The symptom:
You write code, it fails, and you spend 15+ minutes figuring out why. Off-by-one errors. Wrong variable names. Logic bugs.
Why it happens:
You're writing fast but sloppy. Then you pay the price in debugging.
The fix:
Slow down during implementation. Check each line as you write. It's faster to write carefully once than to debug carelessly twice.
Specific techniques:
- Trace through with an example before running
- Use meaningful variable names (not
i,jfor everything) - Check loop bounds before running (off-by-one is the #1 bug)
- Handle edge cases first (empty array, null input)
Cause #5: Problem Reading is Slow
The symptom:
You spend 5-10 minutes re-reading the problem, missing constraints, misunderstanding what's being asked.
Why it happens:
You're reading passively instead of actively extracting information.
The fix:
Use a reading checklist:
- Input: What am I given? (types, sizes)
- Output: What am I returning?
- Constraints: Array size? Value range? This tells you acceptable time complexity.
- Examples: Walk through one example to confirm understanding.
- Edge cases: Empty? Single element? Already sorted?
Time saved: 2-3 minutes per problem (adds up over an interview)
The Speed Improvement Techniques
Technique 1: Pattern Recognition First
The practice:
Before coding, explicitly name the pattern: "This is a sliding window problem" or "This is backtracking."
Why it works:
Naming the pattern narrows your search space. Instead of trying everything, you're applying a known template.
The drill:
For 2 weeks, before each problem, write down:
- What pattern do I think this is?
- Why do I think that?
- What's the template for this pattern?
Then solve the problem. Review: was your pattern guess correct?
Technique 2: Time-Box Your Approach Phase
The practice:
Give yourself exactly 5 minutes to identify an approach. If you don't have one, fall back to brute force.
Why it works:
Prevents the trap of thinking forever without coding. Action beats paralysis.
The rule:
- 5 minutes for Mediums
- 3 minutes for Easies
- 10 minutes for Hards
After the time box, you must have SOMETHING to code—even if suboptimal.
Technique 3: Build a Problem-Solving Template
The practice:
Use the same structure for every problem:
1. UNDERSTAND (2-3 min)
- What are inputs? Outputs?
- What are constraints?
- Walk through one example
2. APPROACH (5 min max)
- What pattern applies?
- What's the brute force?
- What's the optimal?
- State time/space complexity
3. CODE (10-15 min)
- Write clean, commented code
- Handle edge cases first
4. TEST (5 min)
- Trace through with example
- Test edge cases
- State complexity againWhy it works:
Structure prevents wandering. You always know what step you're in and when to move on.
Technique 4: Practice Implementation Speed
The practice:
Re-implement solved problems without looking at the solution.
The specific drill:
- Solve a new problem (take your time)
- Understand the solution thoroughly
- Wait 1 hour
- Re-implement from memory
- Wait 1 day
- Re-implement again
Target: Implement common patterns in under 5 minutes without looking anything up.
Patterns to speed-drill:
- Two-pointer template
- Sliding window template
- Binary search variations
- BFS template
- DFS template
- Stack-based matching
- Basic backtracking structure
Technique 5: Reduce Context Switching
The practice:
Focus on one pattern or problem type for a session. Don't jump between trees, dp, and graphs in the same hour.
Why it works:
Your brain builds pattern recognition faster when problems are clustered. Switching destroys momentum.
The practice structure:
- Monday: Two Pointers problems (5-6)
- Tuesday: Sliding Window problems (5-6)
- Wednesday: Tree problems (5-6)
- etc.
The 4-Week Speed Improvement Plan
Week 1: Baseline + Pattern Recognition
Goal: Establish baseline and start pattern learning
Activities:
- Day 1-2: Solve 10 problems across categories. Time yourself. Calculate baseline.
- Day 3-7: Focus on Patterns 1-5 (Two Pointers, Sliding Window, Fast/Slow, Hash Map, Stack)
Problems per day: 3-4 (quality over quantity)
Tracking: Log time for each problem
Week 2: Implementation Speed
Goal: Get faster at coding known patterns
Activities:
- Day 1-3: Re-implement 10 problems from Week 1 without looking
- Day 4-7: New problems with strict time boxes (Easy: 15 min, Medium: 25 min)
The rule: When time runs out, stop. Review the solution. Re-implement tomorrow.
Problems per day: 4-5
Week 3: Approach Speed
Goal: Get faster at identifying the right approach
Activities:
- Day 1-3: "Pattern identification drill" — Read problem, guess pattern, check in <2 min
- Day 4-7: Mixed difficulty problems with approach time box (5 min to decide)
Problems per day: 5-6
Focus: If pattern selection takes >5 min, you need more pattern exposure (not more thinking time)
Week 4: Full Simulation
Goal: Put it together under interview conditions
Activities:
- Day 1-6: 2-3 problems daily, fully timed, no hints
- Day 7: Mock interview (Pramp or friend)
Time targets:
- Easy: <15 min
- Medium: <30 min
- Hard: <45 min (or brute force + partial optimization)
Tracking: Compare to Week 1 baseline
Common Speed Mistakes
Mistake #1: Grinding Random Problems
What happens:
"I'll just do 500 LeetCode problems and I'll get fast."
Why it fails:
Random problems give random practice. You don't build pattern recognition because patterns aren't clustered.
The fix:
Curated, pattern-organized practice. NeetCode 150 or similar.
Mistake #2: Never Timing Yourself
What happens:
"I'll just practice until I'm ready." You solve problems with no clock.
Why it fails:
You don't know your actual speed. Interview day is the first time you're under time pressure.
The fix:
Always time yourself. Use the benchmarks above.
Mistake #3: Looking Things Up During Practice
What happens:
"I'll just Google how to implement a heap real quick."
Why it fails:
You can't Google during interviews. If you practice with lookups, you'll panic without them.
The fix:
Practice without references. If you can't remember, complete the problem, then drill that gap.
Mistake #4: Only Solving Problems Once
What happens:
You solve a problem, move on, never revisit it.
Why it fails:
You remember the solution, not the pattern. You can't generalize.
The fix:
Re-implement solved problems. Spaced repetition builds speed.
What People Actually Ask
"How long should a Medium LeetCode take?"
Short answer: 20-30 minutes for interview readiness.
Breakdown:
- 5 min to understand and identify approach
- 15 min to code
- 5-10 min to test and discuss
If you're consistently at 40+ minutes, focus on pattern recognition first.
"Why am I so slow compared to others?"
Short answer: You're probably comparing to people who have solved similar problems before.
When someone solves a problem in 10 minutes, they've likely seen the pattern before. Speed comes from recognition, not intelligence.
The fix: Solve more problems in clustered patterns. Speed will come.
"Should I time myself even when learning?"
Short answer: Yes, but loosely.
When learning a new pattern, give yourself extra time. But still track:
- How long without hints?
- How long did hints take?
- Where did I get stuck?
This tells you what to practice.
"Is it okay to skip Hard problems?"
Short answer: For most interviews, yes.
Hard problems rarely appear in interviews (they're too hard to evaluate in 45 min). Focus on Medium-level speed first.
Exceptions: Staff+ roles, specific companies known for Hard problems.
"How do I get faster at implementation specifically?"
Short answer: Re-implement solved problems from memory.
The drill:
- Solve a problem
- Close the solution
- Re-implement from scratch
- Compare
- Repeat until it's muscle memory
Do this for 10-15 core problems. Implementation speed will jump significantly.
Final Verdict: The Speed Stack
After going from 90-minute Mediums to 25-minute Mediums, here's what actually worked:
The Mistakes I Made
Mistake #1: Grinding random problems
- What happened: Solved 100+ problems but couldn't recognize patterns
- Lesson: Pattern-focused practice beats random grinding
Mistake #2: Never timing myself
- What happened: First mock interview was a disaster—I ran out of time
- Lesson: Practice under time pressure from the start
Mistake #3: Looking things up during practice
- What happened: Knew solutions conceptually but couldn't implement without references
- Lesson: Practice without Google
What Actually Improved My Speed
- Pattern recognition drills — Guess the pattern before solving
- Time-boxed approaches — 5 minutes max to choose an approach
- Implementation re-drilling — Re-implement solved problems from memory
- Structured template — Same 4-step process for every problem
- Clustered practice — One pattern per day, not random mix
The Speed Benchmarks
| Where I Started | Where I Ended | Timeframe |
|---|---|---|
| Easy: 30 min | Easy: 10 min | 4 weeks |
| Medium: 90 min | Medium: 25-30 min | 8 weeks |
| Hard: Often incomplete | Hard: Brute force + partial | 12 weeks |
One-Minute Decision Guide
If you're just starting:
Time yourself on 10 problems to get a baseline. Then follow the 4-week plan.
If Easy problems take 30+ min:
You need fundamental pattern practice, not speed drills.
If you know approaches but code slowly:
Focus on implementation re-drilling.
If you get stuck on novel problems:
You need more pattern exposure (100+ curated problems).
If you debug forever:
Slow down during implementation. Prevention beats debugging.
Last updated: January 13, 2026. Based on personal speed improvement journey (6 months of deliberate practice), timing data from 200+ problems, and feedback from engineers who improved their interview speed. Your improvement rate may vary based on starting point.
Want to Practice LeetCode Smarter?
LeetCopilot is a free browser extension that enhances your LeetCode practice with AI-powered hints, personalized study notes, and realistic mock interviews — all designed to accelerate your coding interview preparation.
Also compatible with Edge, Brave, and Opera
