A recruiter-facing record of my progress through the Blind 75 interview problem set.
This repository is not only a collection of accepted answers. Each completed problem documents how I approached it, the tradeoffs I considered, the final Python solution, its time and space complexity, the mistakes I made, and the amount of focused time I spent learning it.
Status: Active learning project
Language: Python 3.11+
Started: June 25, 2026
Problem set: NeetCode Blind 75
| Metric | Current value |
|---|---|
| Completed | 14 / 75 |
| In progress | 1 |
| Total focused time | 8h 50m |
| Completion | 18.7% |
Detailed tracking is available in PROGRESS.md.
- Pattern recognition across common interview problem families.
- Clean and readable Python with type hints.
- The ability to compare brute-force and optimized approaches.
- Accurate time and space complexity analysis.
- Testing against normal cases, edge cases, and failure cases.
- Written technical communication instead of code-only submissions.
- Consistent reflection on mistakes, tradeoffs, and reusable lessons.
| Topic | Problems |
|---|---|
| Arrays & Hashing | 8 |
| Two Pointers | 3 |
| Sliding Window | 4 |
| Stack | 1 |
| Binary Search | 2 |
| Linked List | 6 |
| Trees | 11 |
| Heap / Priority Queue | 1 |
| Backtracking | 2 |
| Tries | 3 |
| Graphs | 6 |
| Advanced Graphs | 1 |
| 1-D Dynamic Programming | 10 |
| 2-D Dynamic Programming | 2 |
| Greedy | 2 |
| Intervals | 5 |
| Math & Geometry | 3 |
| Bit Manipulation | 5 |
| Total | 75 |
blind-75-python/
├── README.md
├── PROGRESS.md
├── LEARNING_LOG.md
├── progress.json
├── arrays-and-hashing/
│ ├── README.md
│ └── contains-duplicate/
│ ├── description.md
│ ├── notes.md
│ ├── solution.py
│ └── test_solution.py
├── two-pointers/
├── sliding-window/
├── ...
├── templates/
│ ├── description.md
│ ├── notes.md
│ ├── solution.py
│ └── test_solution.py
├── scripts/
│ ├── start_problem.py
│ ├── track_problem.py
│ └── update_progress.py
└── .github/workflows/python-tests.yml
Every problem folder uses the same format:
| File | Purpose |
|---|---|
description.md |
Original summary, links, examples, constraints, and completion checklist |
notes.md |
First thoughts, brute force, optimized reasoning, mistakes, and lessons |
solution.py |
Final clean Python solution |
test_solution.py |
Focused tests for normal and edge cases |
Problem statements are summarized in my own words. Full copyrighted statements are not copied into this repository; each folder links back to the original problem.
- Read the problem and restate it in my own words.
- Attempt it without looking at a solution.
- Record the first approach, including why it may be inefficient.
- Identify the core data structure or algorithmic pattern.
- Implement and test the optimized solution.
- Write the time and space complexity.
- Record mistakes and the general lesson that transfers to future problems.
- Revisit the problem later without notes to verify retention.
Focused time includes:
- Independent attempt time.
- Studying hints or explanations.
- Implementing and debugging.
- Writing tests and documentation.
- Reviewing the problem later.
The root progress summary is generated from progress.json.
Start a problem:
python scripts/start_problem.py valid-anagramAdd time and update its status:
python scripts/track_problem.py valid-anagram --status in_progress --add-minutes 35Mark it complete:
python scripts/track_problem.py valid-anagram --status completed --add-minutes 20Regenerate the progress files:
python scripts/update_progress.pyCreate and activate a virtual environment:
python3 -m venv .venv
source .venv/bin/activateInstall development tools:
python -m pip install -r requirements-dev.txtRun all tests:
pytestRun code-quality checks:
ruff check .A problem counts as complete only when:
- The final implementation works.
- The solution is written cleanly in Python.
- Tests cover important edge cases.
- Time and space complexity are documented.
- The reasoning is explained in my own words.
- The time spent is recorded.
- At least one reusable lesson is documented.
By the end of the project, I expect to be able to:
- Recognize common patterns before writing code.
- Explain why an approach works, not only reproduce it.
- Choose appropriate data structures based on constraints.
- Analyze algorithmic complexity accurately.
- Write interview-ready Python under time pressure.
- Communicate technical decisions clearly to engineers and recruiters.
The study list is based on the NeetCode Blind 75, and individual problem folders link to their original practice pages. All explanations, notes, tests, and implementations in this repository are my own unless explicitly attributed.
Code in this repository is available under the MIT License.