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)