Chuyển tới nội dung chính

26 tài liệu đã gắn thẻ được gắn thẻ "cau-truc-du-lieu"

Xem tất cả thẻ

Bài toán chuỗi thường gặp

Ba mẫu bài chuỗi kinh điển — kiểm tra palindrome, anagram, và đếm ký tự — cùng kỹ thuật hai con trỏ và bảng đếm.

Biểu diễn đồ thị

Hai cách lưu đồ thị trong code — ma trận kề và danh sách kề — cùng đánh đổi bộ nhớ và tốc độ.

Cây đỏ-đen (red-black tree)

Cây đỏ-đen là BST tự cân bằng dùng quy tắc tô màu; cân bằng "đủ tốt" với ít xoay hơn AVL, nên được dùng trong nhiều thư viện thực tế.

Cây tìm kiếm nhị phân (BST)

BST giữ tính chất trái nhỏ hơn gốc nhỏ hơn phải, cho tìm/chèn/xóa O(log n) khi cân bằng — và O(n) khi suy biến.

Chuỗi (string)

Chuỗi là mảng của ký tự, tính bất biến (immutable), các thao tác cơ bản và bẫy hiệu năng khi nối chuỗi trong vòng lặp.

Danh sách liên kết đơn

Danh sách liên kết đơn là gì, khác mảng ra sao, vì sao không có truy cập ngẫu nhiên và duyệt là O(n).

Deque & bộ đệm vòng

Deque cho phép thêm/xóa cả hai đầu O(1); bộ đệm vòng (circular buffer) là hàng đợi kích thước cố định ghi đè phần tử cũ nhất.

Hàng đợi (Queue)

Hàng đợi hoạt động theo FIFO (vào trước ra trước), vì sao không nên dùng list.pop(0), và cách cài đúng bằng deque.

Heap & hàng đợi ưu tiên

Heap là cây nhị phân đầy đủ giữ phần tử nhỏ (hoặc lớn) nhất ở gốc, cho lấy min/max O(1) và thêm/xóa O(log n).

Khái niệm đồ thị

Đồ thị là đỉnh nối bằng cạnh; phân loại có hướng/vô hướng, có trọng số, có chu trình, và ví dụ thực tế.

Mảng nhiều chiều

Mảng 2 chiều (ma trận, lưới), cách đánh chỉ số hàng–cột, duyệt và độ phức tạp O(hàng × cột).

Mảng tĩnh vs mảng động

Mảng là gì, vì sao truy cập theo chỉ số là O(1), và khác biệt giữa mảng tĩnh (cố định) với mảng động (tự lớn lên).

Mảng vs linked list: chọn cái nào?

So sánh toàn diện mảng và danh sách liên kết về truy cập, thêm/xóa, bộ nhớ và tính cục bộ cache để biết khi nào chọn cái nào.

Ngăn xếp (Stack)

Ngăn xếp hoạt động theo LIFO (vào sau ra trước), các thao tác push/pop/peek đều O(1), và cách cài đặt.

Set & Map: ứng dụng giải bài

Ba mẫu giải bài dùng set/dict — kiểm tra tồn tại, đếm tần suất, và tra cứu bù (two-sum) — hạ độ phức tạp từ O(n²) xuống O(n).

Trie (cây tiền tố)

Trie lưu các chuỗi theo cây ký tự, cho tìm kiếm và gợi ý theo tiền tố cực nhanh — nền của autocomplete.

Ứng dụng stack & queue

Stack giải kiểm tra ngoặc, undo, DFS; queue giải BFS, lập lịch. Học qua bài kiểm tra cặp ngoặc cân bằng.

Xử lý đụng độ (collision)

Khi hai khóa băm vào cùng một ô — hai cách giải quyết chính là nối chuỗi (chaining) và dò tuyến tính (open addressing).