This page gathers the links used to study algorithms and data structures, grouped by purpose so you can pick the right one for the moment. The Resources section holds articles and videos on single topics, from sparse tables and Dijkstra to dynamic programming patterns, plus a crash course that walks through binary search trees and graphs. The Notes section keeps two short takeaways and a pointer to an interview question collection. Courses lists two GitHub repositories and two Viblo courses for structured study, including an advanced track. Cryptography links cover modular arithmetic and the Chinese Remainder Theorem. The Challenges section ends with Viblo Code for practice.
Table of Contents
Resources

- Sparse Table: https://viblo.asia/p/bang-thua-sparse-table-MkNLrZPlLgA?fbclid=IwAR1M39YW3PQ8NMKQ-_euPZmT9O1nUDoyWCHrUX8FspFMsSrw6wzm3ocESbA
- Coding Interview Resources
- Le Minh Hoang Book Notes
- Problem Solving Approaches
- Dijkstra's algorithm - shortest paths: https://chidokun.github.io/2021/09/dijkstra-algorithm
- LeetCode: Easily recognize the 5 types of Dynamic Programming problems: https://viblo.asia/p/leetcode-de-dang-nhan-biet-5-dang-bai-dynamic-programming-x7Z4Dn90LnX
- Algorithms & data-structures Full Crash Course - https://www.youtube.com/watch?v=jQqQpPMYPXs
- Binary Search Tree: https://www.youtube.com/watch?v=mQMpamkUgW8
- Graph:
- Properties: https://www.youtube.com/watch?v=sY3kvaA9Xok
- Classification: https://www.youtube.com/watch?v=L1tj-q1eQxM
- Representation in code: https://www.youtube.com/watch?v=vrD0n8hJGXQ
- Common problems: https://www.youtube.com/watch?v=NLl6YF0wzvk
- Depth First Search: https://www.youtube.com/watch?v=wyt7HxulLS4
- Breadth First Search - applied to pathfinding: https://www.youtube.com/watch?v=JvZVRYwjRng
- Hands-on algorithm problem-solving playlist by TopCoder: https://www.youtube.com/playlist?list=PLWYOT8C61ll3k_tgJetHkHGtePJ3zn098
- Sites for learning algorithms: https://www.youtube.com/watch?v=jH9w5NKWlzA
- Challenge solutions in Go: https://github.com/aQuaYi/LeetCode-in-Go
- Introduction to a series on cryptographic algorithms: https://viblo.asia/s/cryptography-p0-gioi-thieu-ve-loat-bai-viet-ve-mat-ma-hoc-obA46emMVKv
- Modular math in Cryptography: https://viblo.asia/p/modular-math-in-cryptography-module-trong-mat-ma-hoc-BQyJKaEwVMe
- Chinese Remainder Theorem - Viblo
Notes
- An algorithm can often be simplified by adjusting the input data set
- When you need to decompose the components of a data set with a uniform structure, you can use trees and nodes
- Collection of sources for algorithm practice & coding interviews: https://app.cloverapp.com/page/82a37546-fad0-4662-ae86-c8d96ad55163
Courses
- https://github.com/trekhleb/javascript-algorithms
- Introduction to data-structures and Algorithms: https://learn.viblo.asia/en/courses/introduction-to-data-structures-and-algorithms-JAPdR6qdGy
- Advanced data-structures and Algorithms: https://learn.viblo.asia/en/courses/cau-truc-du-lieu-va-giai-thuat-nang-cao-qM7e5yBe2v
- https://github.com/thealgorithms
Challenges
- Viblo Code - https://code.viblo.asia
Sparse tables and Dijkstra sit next to a Viblo piece on five dynamic programming patterns. A crash course is broken into binary search trees and graphs, and the graph links cover properties, classification, code representation, depth first search, and breadth first search for pathfinding. Two notes say you can simplify an algorithm by adjusting the input data set, and you can use trees and nodes to decompose a uniform data set. Courses point at trekhleb's javascript-algorithms, thealgorithms on GitHub, and two Viblo tracks, one introductory and one advanced. Cryptography links cover a series introduction, modular arithmetic, and the Chinese Remainder Theorem.
See also: Coding Interview Resources · Le Minh Hoang Book Notes