12 CHƯƠNG · ~150 BÀI TẬP · LANGUAGE: JS/TS

Cấu trúc dữ liệu &
Giải thuật từ A đến Z

Lộ trình 12 chương học sâu DSA cho lập trình viên Việt Nam chuẩn bị phỏng vấn. Mỗi chương có lý thuyết chi tiết, ví dụ JS/TS chạy được, visualizer tương tác, bài tập LeetCode tiêu biểu và quiz cuối bài.

Tại sao học DSA?

DSA (Data Structures & Algorithms) là nền tảng tư duy lập trình. Thiếu nó, bạn vẫn có thể code app nhỏ, nhưng:

12
Chương lý thuyết
~150
Bài tập LeetCode
JS/TS
Ngôn ngữ chính
Số lần ôn lại
💡 Cách học hiệu quả nhất
Mỗi chương đọc xong phải tự code lại ít nhất 1 cấu trúc/giải thuật chính. Không có "đọc hiểu" trong DSA — chỉ có "code được" hoặc "không code được". Bài tập cuối chương là bắt buộc, không bỏ qua.

Lộ trình 12 chương

Học theo thứ tự — chương sau xây trên kiến thức chương trước. Click vào card để vào học.

CHƯƠNG 01 · FOUNDATION

Big-O & Phân tích độ phức tạp

Time/space complexity, Big-O/Θ/Ω, amortized analysis. Nền tảng để đánh giá mọi đoạn code.

CHƯƠNG 02 · LINEAR DS

Array & String

Two pointers, sliding window, prefix sum. 40% bài phỏng vấn rơi vào hai pattern này.

CHƯƠNG 03 · LINEAR DS

Linked List

Singly/doubly/circular, dummy node, fast/slow pointer, Floyd's cycle detection.

CHƯƠNG 04 · LINEAR DS

Stack & Queue

LIFO/FIFO, deque, monotonic stack/deque, expression evaluation.

CHƯƠNG 05 · LOOKUP DS

Hash Table

Hash function, collision resolution, load factor. JS Map/Set/Object — khi nào dùng cái nào.

CHƯƠNG 06 · TECHNIQUE

Recursion & Backtracking

Tư duy đệ quy, recursion tree, template backtracking, N-Queens, Sudoku.

CHƯƠNG 07 · ALGORITHM

Sorting Algorithms

Bubble, Selection, Insertion, Merge, Quick, Heap, Counting. Stable, in-place, TimSort.

CHƯƠNG 08 · ALGORITHM

Searching & Binary Search

Binary search 3 dạng, search trên không gian đáp án, rotated sorted array.

CHƯƠNG 09 · TREE

Tree (Binary Tree, BST, Trie)

Traversal pre/in/post-order, BST invariant, Trie cho autocomplete, balanced trees.

CHƯƠNG 10 · TREE-BASED

Heap & Priority Queue

Min/max heap, sift-up/down, heapify O(n), pattern Top-K, two-heap technique.

CHƯƠNG 11 · GRAPH

Graph (BFS, DFS, Dijkstra, MST)

Adjacency list/matrix, topological sort, shortest path, Union-Find, MST.

CHƯƠNG 12 · TECHNIQUE

Dynamic Programming

Memoization vs tabulation, state design, knapsack, LIS/LCS, edit distance.

Xem trước — Bảng so sánh tốc độ Big-O

Đây là thứ bạn sẽ nắm sau Chương 1. Click vào card chương 1 ở trên để học chi tiết.

O(1)
tức thì
O(log n)
cực nhanh
O(√n)
nhanh
O(n)
tuyến tính
O(n log n)
khá tốt
O(n²)
chậm dần
O(n³)
chậm
O(2ⁿ)
tệ
O(n!)
thảm hoạ

Cách dùng tài liệu này

  1. Đọc giáo trình tổng quan trước (5-10 phút) để có cái nhìn toàn cảnh 12 chương.
  2. Học tuần tự: Chương 01 → 02 → ... → 12. Đừng nhảy cóc — kiến thức xếp tầng.
  3. Mỗi chương: đọc lý thuyết → xem visualizer → tự code lại bằng JS/TS → làm quiz → giải bài LeetCode tiêu biểu.
  4. Đúng >= 80% quiz mới chuyển chương. Sai ở đâu, đọc lại phần đó.
  5. Sau khi xong cả 12 chương: bắt đầu LeetCode NeetCode 150 theo pattern.
  6. Mỗi 2 tuần quay lại review lại 1 chương — DSA chỉ ngấm khi ôn lại nhiều lần.
⚠️ Cảnh báo
Đừng "học để biết" — DSA học để code được. Mỗi giải thuật phải tự gõ ít nhất 1 lần, không copy. Nếu chỉ đọc, bạn sẽ quên trong 1 tuần.
Đọc trước Giáo trình tổng quan Chương kế tiếp Chương 01: Big-O →