This is a collection of algorithms and data structures which I've implemented from scratch as well as using inbuilt libraries in Java along with some famous Dynamic Programming Problems.
You can run and edit the algorithms or contribute to them using Gitpod.io, a free online development environment, with a single click.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request 😄
- Lists
- Stacks
- Queues
- Hashtable
- Trees
- Heaps
-
Graphs
- Graph Traversal
- Cycle detection
- Find shortest path in a Graph from a starting Vertex
- Topological sort
- Find minimum spanning tree
- Find Strongly Connected Components
- Maximum Flow
- Hard Problems
-
Searching
- Boolean Parenthesization
- Box Stacking
- Coin Change
- Count Binary Strings Without Adjacent Ones
- Edit Distance
- Egg Dropping Puzzle
- Knapsack Problem
- Knight Probability in Chess board
- Longest Bitonic Subsequence
- Longest Common Subsequence
- Longest Increasing Subsequence
- Longest Palindromic Subsequence
- Matrix Chain Multiplication
- Maximum Length Chain Pairs
- Maximum Sum Increasing Subsequence
- Minimum Jumps to reach End
- Minimum Path Sum
- Optimal Game Strategy
- Pattern Matching
- Shortest Common Supersequence