A comprehensive collection of 75 curated LeetCode problems covering essential data structures and algorithms patterns for coding interviews. This repository is designed for daily practice with structured learning paths and progress tracking.
The Blind 75 is a curated list of 75 LeetCode problems originally compiled by a Facebook engineer. These problems cover the most important patterns and concepts needed to excel in coding interviews at top tech companies. The list focuses on:
- Quality over quantity: 75 carefully selected problems vs. thousands available
- Pattern recognition: Problems grouped by similar techniques and approaches
- Interview relevance: Frequently asked at FAANG and other top companies
- Comprehensive coverage: All major data structures and algorithm paradigms
blind-75/
βββ README.md # This file
βββ CLAUDE.md # Instructions for Claude Code
βββ progress_tracker.py # Interactive progress tracker
βββ .gitignore # Python artifacts
β
βββ arrays/ # 10 problems
βββ strings/ # 10 problems
βββ linked_lists/ # 6 problems
βββ trees/ # 13 problems
βββ graphs/ # 8 problems
βββ dynamic_programming/ # 11 problems
βββ matrix/ # 4 problems
βββ intervals/ # 6 problems
βββ binary/ # 5 problems
βββ heap/ # 2 problems
Each category folder contains:
- Individual problem files with stubs and test cases
README.mdexplaining concepts, patterns, and tips
git clone <your-repo-url>
cd blind-75python progress_tracker.pyThis shows:
- Overall completion percentage
- Category-wise breakdown
- Current streak
- Recommended next problem
Pick a problem from the dashboard or browse categories:
# View problems in a category
python progress_tracker.py --category arrays
# Mark a problem as started
python progress_tracker.py --start two_sum
# Open the problem file
code arrays/two_sum.py # or use your preferred editorEach problem file includes test cases. Run them with:
python arrays/two_sum.pypython progress_tracker.py --complete two_sumThe interactive CLI tracker (progress_tracker.py) helps you stay organized:
# Show dashboard with statistics
python progress_tracker.py
# List all problems
python progress_tracker.py --list
# Filter by category
python progress_tracker.py --category trees
# Filter by status
python progress_tracker.py --status completed
# Mark problem as started
python progress_tracker.py --start problem_name
# Mark problem as completed
python progress_tracker.py --complete problem_name
# View detailed statistics
python progress_tracker.py --stats
# Reset progress (requires confirmation)
python progress_tracker.py --resetFeatures:
- β Track completion status (not started, in progress, completed)
- π Visual progress bars for each category
- π₯ Daily practice streak counter
- π‘ Smart problem recommendations
- π¨ Color-coded terminal output
- πΎ Progress saved locally in
.progress.json
Week 1-2: Easy Problems (Build fundamentals)
- Two Sum, Contains Duplicate, Valid Anagram
- Valid Parentheses, Valid Palindrome
- Reverse Linked List, Merge Two Sorted Lists
- Invert Binary Tree, Maximum Depth, Same Tree
- Best Time to Buy and Sell Stock, Climbing Stairs
Week 3-5: Medium Problems (Core interview prep)
- Focus on arrays, strings, and trees
- Move to graphs and dynamic programming
- Practice matrix and interval problems
Week 6+: Hard Problems (Advanced preparation)
- Merge K Sorted Lists
- Binary Tree Maximum Path Sum
- Serialize and Deserialize Binary Tree
- Find Median from Data Stream
Week 1: Arrays (10 problems) Week 2: Strings (10 problems) Week 3: Linked Lists (6) + Binary (5) Week 4: Trees (13 problems) Week 5: Graphs (8 problems) + Matrix (4) Week 6: Dynamic Programming (11 problems) Week 7: Intervals (6) + Heap (2) + Review
Week 1: Top patterns (Two Sum, Valid Parentheses, Merge Two Lists, Invert Tree, DFS/BFS basics) Week 2: Medium difficulty across categories (breadth over depth) Week 3: Dynamic programming and graph problems Week 4: Hard problems + review weak areas
| Category | Count | Key Concepts |
|---|---|---|
| Arrays | 10 | Two pointers, sliding window, binary search |
| Strings | 10 | Hash maps, sliding window, palindromes |
| Linked Lists | 6 | Two pointers, reversal, fast/slow pointers |
| Trees | 13 | DFS, BFS, recursion, BST properties |
| Graphs | 8 | DFS, BFS, topological sort, union find |
| Dynamic Programming | 11 | Memoization, tabulation, state transitions |
| Matrix | 4 | 2D traversal, in-place operations |
| Intervals | 6 | Sorting, merging, greedy algorithms |
| Binary | 5 | Bit manipulation, XOR properties |
| Heap | 2 | Priority queue, top K problems |
- Understand before coding: Read the problem carefully, identify the pattern
- Start simple: Begin with brute force, then optimize
- Think out loud: Practice explaining your approach
- Test thoroughly: Include edge cases in your tests
- Review solutions: Learn from optimal solutions even if you solved it
- Practice consistently: Better to do 1 problem/day than 10 in one day
- Clarify: Ask questions, understand constraints
- Examples: Work through examples, identify patterns
- Approach: Discuss multiple approaches and trade-offs
- Code: Write clean, working code
- Test: Run through test cases, including edge cases
- Optimize: Analyze time/space complexity, improve if possible
- Communicate clearly throughout
- State assumptions explicitly
- Consider edge cases out loud
- Explain your thought process
- Don't be afraid to ask for hints
- Test your code before saying you're done
Build the habit of daily practice:
- Set a consistent time for solving problems
- Start with easier problems to build confidence
- Use the tracker to maintain motivation
- Join study groups or find an accountability partner
- Celebrate milestones (25%, 50%, 75%, 100%)
- LeetCode - Original problem source
- NeetCode - Video explanations for Blind 75
- AlgoExpert - Structured courses
- Big-O Cheat Sheet
- Visualgo - Algorithm visualizations
- GeeksforGeeks - Detailed explanations
- Cracking the Coding Interview by Gayle Laakmann McDowell
- Elements of Programming Interviews by Adnan Aziz
- Introduction to Algorithms (CLRS) for deep dives
While this repository contains problem stubs for practice:
- Keep solutions private to yourself (don't commit them)
- Feel free to add more test cases
- Report issues or suggest improvements
- Share your learning journey and tips
Each problem file follows this template:
"""
Problem: [Name] (LeetCode #[number])
Difficulty: [Easy/Medium/Hard]
Category: [Category Name]
Description:
[Full problem description]
Examples:
[Input/output examples]
Constraints:
[Problem constraints]
Time Complexity Target: O(...)
Space Complexity Target: O(...)
"""
def solution_function(params):
"""
TODO: Implement your solution here
"""
pass
def test_solution():
"""Test cases"""
# Test implementations
pass
if __name__ == "__main__":
test_solution()Progress is stored in .progress.json (git-ignored). This file tracks:
- Problem completion status
- Last practice date
- Current streak
- Started date
To sync progress across machines, manually copy the .progress.json file.
Complete this challenge to:
- Build confidence for technical interviews
- Recognize common patterns quickly
- Improve problem-solving speed
- Master essential data structures and algorithms
- Develop a systematic approach to coding problems
- Intensive: 2-3 problems/day = ~1 month
- Moderate: 1-2 problems/day = ~2 months
- Relaxed: 1 problem every 2 days = ~5 months
- Long-term: 2-3 problems/week = ~6 months
Choose based on your interview timeline and experience level.
- β¨ 25% (19 problems): Foundation built
- π 50% (38 problems): Pattern recognition strong
- π« 75% (57 problems): Interview-ready
- π― 100% (75 problems): Master level!
- Read the category README.md for concepts and patterns
- Search LeetCode discussions for the specific problem
- Watch NeetCode video explanations
- Join coding communities (Reddit, Discord, etc.)
- Practice explaining solutions to others
This repository is for educational purposes. Problems are from LeetCode.com. Please respect their terms of service.
Ready to start? Run python progress_tracker.py and begin your journey! π
Good luck with your interview preparation! πͺ