This specialization is an introduction to data structures and algorithms. It emphasizes the big picture and conceptual understanding over low-level implementation and mathematical details.
Taught by Tim Roughgarden, and provided and available on Coursera.
This repository contains solutions to the assignments of Stanford Algorithms Specialization. Please attempt the assignments on your own first. You can always consult the discussion forum for hints or explanations. I found it super helpful on my learning journey. Use this as a reference only.
And in no way is this course even close to a real-world implementation when it comes to programming. Additional learning resources are highly suggested.
I would still encourage those who successfully tackled the problems to look at other people's solutions in that everyone's brain works differently. Sometimes different approaches may spark some ideas or probably inspire you in the long run. And then you can incorporate those ideas into your programming toolbox.
Happy coding😃
Karatsuba algorithm
Merge sort
Quick sort
Karger's algorithm and union-find data structure
Kosaraju's algorithm and Tarjan's algorithm
Dijkstra's algorithm and Bellman-Ford algorithm
Heap data structure/priority_queue
Hash table
Binary search tree and graph traversal
Prim's algorithm and Kruskal's algorithm
Clustering algorithm, unordered_map and bit manipulation
Huffman coding
Dynamic programming and greedy algorithm
Floyd-Warshall algorithm
Dynamic programming, Hamiltonian cycle and bitmasking operation
Nearest neighbor heuristic
Conjunctive normal form, implication graph and Kosaraju's algorithm