Welcome! This repository is my personal journey through the world of Data Structures and Algorithms, implemented in Java. It serves as a practice log and a collection of clean, well-explained solutions to common DSA problems.
The problems and learning path are inspired by some of the best resources available:
- Kunal Kushwaha's DSA Bootcamp
- AlgoCamp DSA Program
- My Curated DSA Questions
This project is dedicated to providing clear and efficient Java implementations of fundamental data structures and algorithms. Each solution is crafted to be readable, well-commented, and easy to understand.
The repository is organized by topic, covering a wide range of essential DSA concepts.
- Arrays & Strings
- Linked Lists (Singly, Doubly, Circular)
- Stacks & Queues
- Heaps & Priority Queues
- Trees (Binary, BST, AVL)
- Segment Trees & Fenwick Trees
- Graphs
- Tries
- Hash Maps & Sets
- Sorting & Searching
- Recursion & Backtracking
- Divide & Conquer
- Dynamic Programming
- Greedy Algorithms
- Bit Manipulation
- Graph Algorithms (BFS, DFS, Dijkstra's, etc.)
- String Algorithms (KMP, Z-algorithm)
The project is structured logically, with each major topic residing in its own directory for easy navigation.
/dsa-java
.gitignore
README.md
/src
/arrays
/backtracking
/bitmanipulation
/dynamicprogramming
/graphs
/heaps
/linkedlists
/recursion
/searching & sorting
/stacks
/strings
/trees
/tries
Follow these instructions to get a copy of the project up and running on your local machine.
- Java Development Kit (JDK) 11 or higher.
- An IDE of your choice (e.g., IntelliJ IDEA, VS Code, Eclipse).
- Git installed on your machine.
- Clone the repository:
git clone [https://github.com/your-username/dsa-java.git](https://github.com/your-username/dsa-java.git)
- Navigate to the project directory:
cd dsa-java - Open the project in your favorite IDE. You can now browse and run individual files.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This repository heavily relies on the fantastic content from the following educators and platforms:
This project is licensed under the MIT License - see the LICENSE file for details.
Thanks for visiting! Happy Coding! 💻