A focused, long-term Data Structures & Algorithms practice repository for interview preparation and continuous learning.
| Metric | Count |
|---|---|
| Total Problems Solved | 1 / 120+ |
| Easy | 1 |
| Medium | 0 |
| Hard | 0 |
This repository tracks my Data Structures & Algorithms journey. I'm solving problems from multiple platforms (LeetCode, NeetCode, HackerRank, Codeforces) in Python to prepare for technical interviews.
Target: Solve 120+ problems while building a deep understanding of DSA concepts.
- ✅ Master core data structures (Arrays, Hash Maps, Stacks, Queues, Trees, Graphs)
- ✅ Understand algorithm paradigms (Two Pointers, Sliding Window, Prefix Sum, Dynamic Programming, etc.)
- ✅ Build problem-solving intuition
- ✅ Prepare for technical interviews
- ✅ Create a reference guide for future interviews
- Understand before coding – Read the problem, understand the pattern, then code.
- Practice consistency – Regular practice beats sporadic marathon sessions.
- Document insights – Each topic has a notes file with patterns and tips.
- Use templates – Reusable code templates help solve similar problems faster.
- Clean code – Solutions are readable and well-commented.
dsa-practice/
│
├── README.md # This file
├── ROADMAP.md # Learning roadmap and checklists
│
├── notes/ # Concept explanations and patterns
│ ├── arrays.md
│ ├── hash_maps.md
│ ├── stacks.md
│ ├── queues.md
│ ├── two_pointers.md
│ ├── sliding_window.md
│ └── prefix_sum.md
│
├── templates/ # Reusable code templates
│ ├── binary_search.py
│ ├── dfs.py
│ ├── bfs.py
│ ├── sliding_window.py
│ └── prefix_sum.py
│
├── problems/ # Problem solutions organized by platform
│ ├── leetcode/
│ │ ├── easy/
│ │ ├── medium/
│ │ └── hard/
│ ├── neetcode/
│ ├── hackerrank/
│ └── codeforces/
│
└── assets/ # Images, diagrams (if needed)
Key Design Decisions:
- notes/ – One markdown file per topic, containing concepts, patterns, and interview tips.
- templates/ – Reusable code templates for common problem patterns.
- problems/ – Organized by platform and difficulty level.
- Minimal overhead – No per-problem README files or excessive documentation.
| Topic | Status | Notes |
|---|---|---|
| Arrays | ✅ In Progress | 1 problem solved; traversal and edge-case reasoning are improving |
| Hash Maps | ⬜ Not Started | 0 problems |
| Stacks | ⬜ Not Started | 0 problems |
| Queues | ⬜ Not Started | 0 problems |
| Two Pointers | ⬜ Not Started | 0 problems |
| Sliding Window | ⬜ Not Started | 0 problems |
| Prefix Sum | ⬜ Not Started | 0 problems |
- ✅ Contiguous memory intuition
- ✅ O(1) indexing
- ✅ O(n) traversal
- ✅ Big-O: sequential vs nested loops
- ✅ Big-O: ignoring constant factors
- ✅ Linear traversal pattern
- ✅ Running maximum pattern
- ✅ Edge-case reasoning for traversal problems
- Warm-up / interview-style: Find Maximum Element → Completed
- None major so far
- Minor correction: avoided redundant traversal and fixed incorrect logic
Track solved problems here:
| # | Platform | Problem | Difficulty | Topic | Status |
|---|---|---|---|---|---|
| 1 | - | Find Maximum Element | Easy | Arrays | ✅ Completed |
- Choose a problem – I pick from the ROADMAP based on the current topic.
- Understand the pattern – I read the related notes before coding.
- Solve independently – I write my own solution first.
- Optimize – I review for time/space complexity improvements.
- Document – I add comments and update progress.
- Reflect – I note patterns and insights for future problems.
- Re-read the relevant file(s) in notes/ where I record patterns and examples.
- Revisit code in templates/ to see if a reusable structure applies.
- Check similar problems I've already solved in this repo for hints.
- Do a focused search online for the specific pattern or technique (only after I've tried my approach).
- Add a short note in the problem file describing what I tried, what's blocking me, and the next small step to take.
- Solve 50 problems (foundational level)
- Solve 100 problems (intermediate level)
- Solve 120+ problems (advanced level)
- Add advanced topics: Dynamic Programming, Graphs, Greedy Algorithms
- Create a performance optimization guide
- Build a problem patterns index
- Read the ROADMAP.md to see my learning path.
- Start with Arrays – open notes/arrays.md to review concepts.
- Review relevant templates in templates/.
- Solve problems and update progress in this README and the problem file.
Last Updated: 2026-07-01
Repository Status: Active