Progress: 4/6 courses completed
This repository contains almost all the solutions for Data Structures and Algorithms Specialization. The language of choice is Python3, but I tend to switch to Ruby/Rust in the future. All program assignments can be found inside the course weeks directory.
Disclaimer: The below solutions is for reference only. Please design and implement your own algorithms to pass the courses.
- Small Fibonacci Number
 - The Last Digit of a Large Fibonacci Number
 - Greatest Common Divisor
 - Least Common Multiple
 - Huge Fibonacci Number modulo m
 
- Changing Money
 - Fractional Knapsack
 - Minimum Dot Product
 - Covering Segments by Points
 - Pairwise Distinct Summands
 
- Primitive Calculator
 - Take as Much Gold as Possible
 - Compute the Edit Distance Between Two Strings
 - Maximize the Value of an Arithmetic Expression
 - Longest Common Subsequence of Three Sequences
 
- Checking Consistency of CS Curriculum
 - Determining an Order of Courses
 - Checking Whether Any Intersection in a City is Reachable from Any Other
 
- Computing the Minimum Cost of a Flight
 - Detecting Anomalies in Currency Exchange Rates
 - Exchanging Money Optimally
 
- Friend Suggestion
 - Compute Distance Faster Using Coordinates
 - Compute Distance with Preprocessing
 - Compute Distance with Preprocessing on Larger Road Networks
 - Travelling Salesman Problem
 
- Construct a Trie from a Collection of Patterns
 - Implement TrieMatching
 - Extend TrieMatching
 - Construct the Suffix Tree of a String
 - Find the Shortest Non-Shared Substring of Two Strings
 
- Construct the Burrows–Wheeler Transform of a String
 - Reconstruct a String from its Burrows–Wheeler Trans-form
 - Implement BetterBWMatching
 - Construct the Suffix Array of a String
 
- Find All Occurrences of a Pattern in a String
 - Construct the Suffix Array of a Long String
 - Pattern Matching with the Suffix Array
 - Construct the Suffix Tree from the Suffix Array
 
All contributions are welcome. Just make a PR. Below is a list of general improvements that need to be added that I would love help with:
- Improve documentation
 - Clean up code (by fixing pep8 errors)
 - Better algorithms that reduce time complexity (espescially for course #3 & #4)