You've been grinding LeetCode Easy problems for two weeks. You can solve most of them within 20 minutes. You're starting to feel confident.
Then doubt creeps in: "Am I ready for Medium problems, or will I just waste time being stuck?"
You try one. It's overwhelming. You look at the solution. It uses concepts you haven't mastered. You go back to Easy problems, wondering if you should have stayed longer.
This is the progression dilemma every LeetCoder faces: move too early and you'll struggle unproductively; move too late and you'll plateau without growth.
The problem is that most advice is vague: "When you feel comfortable" or "After 50 problems." But comfort is subjective, and problem count doesn't measure skill.
This guide will give you concrete, measurable skill markers that tell you when you're truly ready to progress—removing the guesswork from your learning path.
TL;DR
- The Core Challenge: Progression timing is critical—jumping to Medium too early causes unproductive struggle and burnout; staying on Easy too long creates false confidence and skill plateau
- Why It Matters: Optimal learning happens in the "struggle zone" between comfort and overwhelm; progressing at the right time maximizes growth efficiency and maintains motivation
- Readiness Framework: 5 concrete skill markers indicate readiness: (1) Pattern recognition speed, (2) Edge case anticipation, (3) Time complexity awareness, (4) Implementation confidence, (5) Debugging independence
- Common Beginner Mistake: Using problem count as readiness measure instead of skill depth—solving 100 Easy problems superficially doesn't prepare you for Medium better than mastering 30 deeply
- What You'll Learn: Self-assessment checklist with specific tests (can you solve Easy in 15min? explain your solution? identify patterns before coding?), plus strategies for gradual transition using DSA learning path principles and spaced repetition
Why Progression Timing Matters
The Goldilocks Zone of Learning
Learning happens most efficiently when problems are:
- Not too easy — If every problem feels trivial, you're not growing
- Not too hard — If every problem feels impossible, you're not learning, just frustrating yourself
- Just right — Challenging enough to stretch your skills, not so hard you can't make progress
This is called the Zone of Proximal Development in educational psychology.
Too early progression:
- You don't have foundational patterns internalized
- Every Medium problem feels like starting from zero
- You spend more time looking at solutions than solving
- Motivation drops because success feels random
Too late progression:
- Easy problems become repetitive busywork
- You're practicing speed, not learning new skills
- False confidence: you feel prepared, but Medium exposes gaps
- Wasted time that could have been spent on growth
The Danger of Problem Count as a Metric
Many beginners use arbitrary numbers: "Solve 50 Easy before Medium" or "100 Easy, then 150 Medium."
Why this fails:
If you solve 100 Easy problems by:
- Looking at solutions after 5 minutes
- Not understanding the why, just memorizing the what
- Never revisiting to test retention
- Skipping edge cases and optimization
You haven't learned 100 problems' worth of patterns—you've memorized 100 fragile solutions.
Instead, depth > breadth. Solving 30 Easy problems deeply (understanding patterns, variations, optimizations) prepares you better than solving 100 superficially.
The 5 Skill Markers of Readiness
Here are concrete, testable indicators that you're ready to progress.
Marker 1: Pattern Recognition Speed
What it means: You can identify the category of a problem within 1-2 minutes of reading it.
Test yourself:
Pick 5 random Easy problems you haven't seen. For each, ask:
- "What type of problem is this?" (e.g., array traversal, hash map lookup, two pointers)
- "What technique would I use?" (e.g., sliding window, complement search, greedy)
Readiness indicator:
✅ Ready: You correctly identify the pattern in 4/5 problems without looking at hints
❌ Not ready: You're guessing randomly or need to start coding to figure it out
Why this matters: Medium problems combine multiple patterns. If you can't recognize individual patterns quickly, combining them is impossible.
Marker 2: Edge Case Anticipation
What it means: Before coding, you can list the edge cases your solution needs to handle.
Test yourself:
For a problem like "Reverse a linked list," can you immediately list:
- Empty list (null head)
- Single node
- Two nodes
- Very long list
- Cycle (if relevant)
Readiness indicator:
✅ Ready: You anticipate edge cases before coding and design your solution to handle them
❌ Not ready: You discover edge cases only when test cases fail
Why this matters: Medium problems have more complex edge cases. If you can't anticipate them on Easy, you'll spend all your Medium time debugging.
Marker 3: Time Complexity Awareness
What it means: You know the time complexity of your solution before submitting and can explain why.
Test yourself:
After solving an Easy problem, ask yourself:
- "What is the time complexity of my solution?"
- "Why is it O(n) and not O(n²)?"
- "Could I optimize this further?"
Readiness indicator:
✅ Ready: You can correctly analyze complexity and identify bottlenecks without help
❌ Not ready: You don't think about complexity, or you guess ("It's probably O(n)?")
Example:
def hasDuplicate(nums):
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] == nums[j]:
return True
return FalseCan you see this is O(n²)? Can you optimize to O(n) with a hash set?
If not, stick with Easy. Medium problems require this optimization instinct.
Marker 4: Implementation Confidence
What it means: You can translate your approach into working code without constantly debugging syntax or logic errors.
Test yourself:
Solve 3 Easy problems in one sitting. For each:
- Write the solution from scratch (no copy-paste)
- Run it once
- Count how many changes you needed to make it pass
Readiness indicator:
✅ Ready: Your solution works on the first or second try most of the time
❌ Not ready: You're constantly fixing syntax errors, off-by-one errors, and logic bugs
Why this matters: Medium problems are longer and more complex. If you struggle with implementation on Easy, Medium will be overwhelming.
Marker 5: Debugging Independence
What it means: When your solution fails a test case, you can debug it without immediately looking at the solution or asking for help.
Test yourself:
Next time you fail a test case on Easy:
- Can you identify the bug within 10 minutes?
- Can you generate your own test case that reproduces the failure?
- Can you fix it without external help?
Readiness indicator:
✅ Ready: You systematically debug failures using edge cases, traces, and hypothesis testing
❌ Not ready: You immediately look at solutions or feel stuck without external help
Why this matters: Medium problems will fail in more subtle ways. Strong debugging skills are essential.
Self-Assessment Checklist
Use this checklist to objectively measure your readiness.
Check all that apply:
- I Can solve most Easy problems in 15-20 minutes
- I recognize common patterns (two pointers, hash maps, sliding window) immediately
- I anticipate edge cases before coding
- I can explain the time and space complexity of my solutions
- I write working code on the first or second attempt
- I debug failures independently without looking at solutions
- I can solve the same Easy problem a week later without reviewing notes
- I understand why my solution works, not just that it works
- I've solved variations of problems (e.g., Two Sum → Two Sum II → Three Sum)
- I rarely get "Time Limit Exceeded" on Easy problems
Scoring:
- 8-10 checked: You're ready for Medium problems
- 5-7 checked: You're close—spend 1-2 more weeks deepening Easy mastery
- 0-4 checked: Focus on fundamentals before progressing
The Gradual Transition Strategy
Don't jump from 100% Easy to 100% Medium overnight. Use a gradual transition.
Week 1-2: Easier Medium Problems
Start with the easiest Medium problems (sorted by acceptance rate).
Recommended approach:
- Filter LeetCode Medium by Acceptance Rate (descending)
- Start with 60%+ acceptance problems
- Allow yourself 45 minutes per problem
- If stuck after 30 minutes, look at hints (not full solutions)
Goal: Build confidence that Medium is achievable
Week 3-4: Mixed Practice
Alternate between Easy and Medium:
- Monday: 2 Easy (warm-up)
- Wednesday: 1 Medium (challenge)
- Friday: 1 Easy + 1 Medium
- Sunday: Review and consolidate patterns
Goal: Maintain Easy fluency while building Medium skills
Week 5+: Majority Medium
Shift ratio to 70% Medium, 30% Easy:
- Use Easy for confidence-building when stuck
- Use Easy to reinforce foundational patterns
- Focus Medium practice on patterns you're weak at
Goal: Make Medium your default difficulty
Common Mistakes When Progressing
Mistake 1: Jumping Too Early
Symptom: Every Medium problem requires looking at the solution
Impact: You're memorizing Medium solutions instead of learning patterns
Fix: Go back to Easy for 1-2 weeks, but solve variations and optimize
Mistake 2: Staying Too Long
Symptom: Easy problems feel trivial, you solve them on autopilot
Impact: You're not growing, just rehearsing
Fix: Even if you lack confidence, try Medium. Discomfort is where growth happens.
Mistake 3: Not Revisiting Previous Problems
Symptom: You solve a problem once and never look at it again
Impact: You forget patterns and can't recognize them in new contexts
Fix: Use spaced repetition—revisit problems after 3 days, 1 week, 2 weeks
Mistake 4: Comparing Yourself to Others
Symptom: "Everyone else is doing Medium already, I should too"
Impact: You skip foundational learning and struggle unnecessarily
Fix: Your learning path is yours. Progress based on your skill markers, not others' timelines.
How to Test Your Readiness Right Now
Try this experiment:
Step 1: Pick 3 random Easy problems you haven't solved before
Step 2: For each problem:
- Read it carefully
- Identify the pattern (2 minutes max)
- Write pseudocode (5 minutes max)
- Implement and submit (15 minutes max)
Step 3: Evaluate yourself:
| Metric | Ready for Medium | Stay on Easy |
|---|---|---|
| Pattern ID | Identified in < 2 min | Took > 5 min or wrong |
| Solve Time | All 3 solved in < 20 min each | Any took > 30 min |
| Accuracy | Passed on 1st or 2nd submit | Required > 3 submissions |
| Explanation | Can explain complexity clearly | Unsure why solution works |
If you hit 3/4 "Ready" metrics, you're ready.
Using Tools to Accelerate Readiness
Building readiness faster requires:
- Immediate feedback on whether you're using the right pattern
- Guided hints when stuck (not full solutions that skip learning)
- Structured review so you retain what you've learned
Tools like LeetCopilot support this progression by helping you recognize when you've identified the right approach versus when you're off track, offering incremental guidance that builds pattern intuition rather than solution memory, and generating structured notes for spaced repetition practice.
This accelerates the mastery that signals readiness for harder problems.
FAQ
I've solved 50 Easy problems but still fail most Medium. What's wrong?
You likely memorized solutions instead of internalizing patterns. Go back and resolve Easy problems from scratch without notes. If you can't, you didn't learn them deeply enough.
Should I finish all Easy problems before starting Medium?
No. Once you hit the readiness markers (see checklist), start mixing in Medium. You'll learn more from controlled struggle than from exhausting Easy.
What if I get discouraged failing Medium problems?
That's normal. Expect a 50% success rate initially. Use failures as learning: identify the pattern you missed, study it, then retry similar problems.
How long does it typically take to be ready for Medium?
Varies widely. With focused practice:
- 2-4 weeks (1-2 hours/day) for strong programmers
- 4-8 weeks for beginners
- Depth of understanding matters more than calendar time
Can I skip Medium and go straight to Hard if I'm experienced?
Only if you can already solve Medium in 20-30 minutes consistently. Hard problems assume Medium patterns are automatic.
Conclusion
Knowing when to progress from Easy to Medium isn't about problem count or time spent—it's about demonstrable skill mastery.
You're ready when you can:
- Recognize patterns instantly
- Anticipate edge cases before coding
- Analyze time complexity confidently
- Implement solutions without constant debugging
- Debug failures independently
If you're checking these boxes, stop hesitating. Medium problems will stretch you, but you have the foundation to handle them.
If you're not there yet, don't rush. Two more weeks of deep Easy practice—solving variations, optimizing solutions, explaining your reasoning—will prepare you better than jumping early and struggling unproductively.
The goal isn't to move fast. It's to move when you're ready. That's when progress accelerates.
Test yourself with the checklist above. Be honest. Then commit: either double down on Easy mastery, or take the leap to Medium with confidence.
Either way, you're not guessing anymore. You know where you stand, and you know what comes next.
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
