This repository documents my ongoing journey of learning and practicing Data Structures and Algorithms using C++. It serves as a personal log of my progress, a collection of solutions to various problems, and a quick reference guide for future review.
The repository is organized by topic. Each top-level directory corresponds to a major data structure, an algorithmic concept, or a C++ feature. Inside each directory, you'll find C++ source files (.cpp) that implement the concepts or solve specific problems related to that topic.
Here's a summary of the concepts and problem patterns I've worked on:
- Arrays: Basic operations, rotations, and classic problems.
- 2D Arrays (Matrices): Traversal (Spiral, Wave), rotation, binary search, and other matrix manipulations.
- Strings: (Actively working on this)
- Basic manipulations and checks (Palindrome, Reversal).
- Problem-solving with strings (Sorting, IP Defanging).
- Introduction to Sliding Window technique.
- Binary Search: Standard implementation and solutions to many popular interview problems on sorted arrays.
- Two Pointers: Solving problems efficiently by using two pointers to traverse data structures.
- Prefix Sum: Technique for solving subarray sum and related problems.
- Sorting: Implementation of basic sorting algorithms like Insertion Sort.
- Mathematical Algorithms: Basic number theory concepts like GCD.
- Hands-on practice with core STL containers and utilities:
std::vectorstd::liststd::pairstd::mapstd::setstd::unordered_mapstd::unordered_set
My immediate focus is on deepening my understanding of Strings and the Sliding Window technique. After that, I plan to tackle:
- Pointers and Memory Management
- Recursion (Big Boss)
- Object Oriented Programming in c++ (OOP)
- Linked Lists
- Stacks & Queues
- Trees (Binary Trees, BSTs)
- Heaps (Priority Queues)
- Graphs
- Dynamic Programming
"The only way to learn a new programming language is by writing programs in it." - Dennis Ritchie
Last updated: September 4, 2025