Skip to content

GreatTitanDev/DSA-Practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DSA Practice Repository

A focused, long-term Data Structures & Algorithms practice repository for interview preparation and continuous learning.


📊 Progress Overview

Metric Count
Total Problems Solved 1 / 120+
Easy 1
Medium 0
Hard 0

Table of Contents


About

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.


Goals

  • ✅ 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

Learning Philosophy

  1. Understand before coding – Read the problem, understand the pattern, then code.
  2. Practice consistency – Regular practice beats sporadic marathon sessions.
  3. Document insights – Each topic has a notes file with patterns and tips.
  4. Use templates – Reusable code templates help solve similar problems faster.
  5. Clean code – Solutions are readable and well-commented.

Repository Structure

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.

Topics Progress

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

Recent Progress Update

Arrays

  • ✅ 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

Problems Solved

  • Warm-up / interview-style: Find Maximum Element → Completed

Current Weak Spots

  • None major so far
  • Minor correction: avoided redundant traversal and fixed incorrect logic

Problem Tracking

Track solved problems here:

# Platform Problem Difficulty Topic Status
1 - Find Maximum Element Easy Arrays ✅ Completed

Study Workflow

My Daily Routine

  1. Choose a problem – I pick from the ROADMAP based on the current topic.
  2. Understand the pattern – I read the related notes before coding.
  3. Solve independently – I write my own solution first.
  4. Optimize – I review for time/space complexity improvements.
  5. Document – I add comments and update progress.
  6. Reflect – I note patterns and insights for future problems.

If I'm stuck

  1. Re-read the relevant file(s) in notes/ where I record patterns and examples.
  2. Revisit code in templates/ to see if a reusable structure applies.
  3. Check similar problems I've already solved in this repo for hints.
  4. Do a focused search online for the specific pattern or technique (only after I've tried my approach).
  5. Add a short note in the problem file describing what I tried, what's blocking me, and the next small step to take.

Future Goals

  • 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

Getting Started

  1. Read the ROADMAP.md to see my learning path.
  2. Start with Arrays – open notes/arrays.md to review concepts.
  3. Review relevant templates in templates/.
  4. Solve problems and update progress in this README and the problem file.

Last Updated: 2026-07-01
Repository Status: Active

About

A personal repository for practicing Data Structures and Algorithms (DSA). It includes problem solutions, reusable algorithm templates, and notes to strengthen understanding. The goal is consistent practice, progressive milestones, and building a solid foundation for interviews and competitive programming.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages