This repository is a personal project to document my journey of learning Data Structures and Algorithms (DSA) with C++.
- Master core data structures such as Arrays, Linked Lists, Stacks, Queues, Trees, Graphs, Heaps, and Hashing.
- Learn the fundamental algorithms like Sorting, Searching, Dynamic Programming, Greedy Algorithms, Divide and Conquer, and Backtracking.
- Focus on problem-solving through continuous practice on platforms like Leetcode, Codeforces, GeeksforGeeks, and HackerRank.
- Build a solid understanding of advanced data structures like Segment Trees, Tries, and Suffix Trees.
- Implement optimization techniques for time and space complexity to solve problems efficiently.
The learning process is broken down into bite-sized topics and practice exercises. Each topic will be completed in a progressive manner, ensuring a thorough understanding of every concept. You can track my progress in the Progress Tracker document, which provides a checklist of topics to cover.
The structure of this repository is organized to reflect the stages of my learning:
- PROGRESS-TRACKER.md: A detailed list of topics to learn and track.
- CONTRIBUTING.md: Information about contributing (This repo is for personal use, so contributions are not being accepted).
- Code Implementations: Each topic will have a folder with C++ implementations, explanations, and problem-solving strategies.
This repository will cover a wide range of topics in DSA, including:
- Arrays and Strings
- Linked Lists
- Stacks and Queues
- Trees
- Graphs
- Heaps and Priority Queues
- Hashing
- Dynamic Programming
- Backtracking
- Divide and Conquer
- Greedy Algorithms
- Advanced Data Structures
- Bit Manipulation
- Math and Number Theory
- String Algorithms
- Computational Geometry
- Miscellaneous Topics
For detailed topics and concepts, refer to the Progress Tracker.
To reinforce the learning, I will regularly solve problems from the following platforms:
- Leetcode: For core DSA problems and interview-focused questions.
- Codeforces: For competitive programming and algorithmic challenges.
- HackerRank: For hands-on practice with problems across various domains.
- GeeksforGeeks: For in-depth DSA problems and tutorials.
- InterviewBit: For interview-style problems and challenges.
- CodeChef: For regular contests and long challenges.
As you work through the topics, update the Progress Tracker by marking the topics you've completed.
Each topic will have a folder containing C++ code implementations for various problems. Make sure to check the explanations and improve your understanding by experimenting with the code.
Solve the problems on the mentioned platforms to practice and improve your coding and problem-solving skills.
This repository is for personal use only, and I am not currently accepting contributions. However, feel free to use the content and structure to guide your own learning journey.
If you find any mistakes or areas for improvement, you can open an issue to discuss it.
While this is a personal project, I have set an initial timeline of 6 months to complete the major topics, followed by ongoing problem-solving practice for interview preparation. The timeline may vary based on progress and learning pace.
This repository is licensed under the MIT License.
Happy learning! Let's master DSA #competitive programming πͺ