Welcome to my personal playground for problem-solving with various algorithmic techniques! This repository is packed with a diverse set of algorithmic paradigms to help one master the art. Here are the four main categories covered:
-
Greedy Algorithms: they make locally optimal choices at each step with the hope of finding a global optimum. They are often used for optimization problems.
-
Divide & Conquer Algorithms: it is a powerful technique that involves recursively breaking down a problem into subproblems, solving them, and then combining their solutions.
-
Dynamic Programming: it involves breaking a problem down into smaller subproblems and solving each subproblem only once. The solutions to subproblems are stored and reused as needed.
-
Network Flow: they are used to find the optimal flow in a flow network. They are crucial for solving problems related to transportation, communication, and more.
In addition to these, we also cover various Graph Algorithms which are fundamental for analyzing and processing data represented as graphs.
(TODO)
If you'd like to contribute to this collection by adding new problems or improving existing solutions, feel free to fork the repository and submit a pull request. Please make sure to follow the contribution guidelines.
This repository is licensed under the MIT License.
Happy coding! 🚀