Cấu trúc dữ liệu và giải thuật¶
Bạn có thể hình dung kiểu như này:
Cấu trúc dữ liệu là cách sắp xếp dữ liệu
Còn giải thuật là xử lý dữ liệu, hay còn gọi là thuật toán
Chúng ta có: Input -> Processing -> Output
CTDL nằm trong Input
Giải thuật sẽ là lúc xử lý, tức Processing
Hoặc bạn có thể chỉ cần học cuốn lập trình và giải thuật của Lê Minh Hoàng
Cấu trúc dữ liệu¶
Đọc các bài đọc tổng hợp: https://www.vietjack.com/cau-truc-du-lieu-va-giai-thuat/index.jsp
Tìm hiểu cơ bản về cấu trúc dữ liệu là gì và tại sao nó quan trọng - Chủ yếu là cách sắp xếp dữ liệu tốt sẽ giúp cho việc xử lý dữ liệu được đơn giản hóa hơn: https://www.vietjack.com/cau-truc-du-lieu-va-giai-thuat/cau-truc-du-lieu-la-gi.jsp
Các cấu trúc dữ liệu cơ bản¶
- Array
- Linked Lists
- Stacks
- Queues
- Hash Tables
Thuật toán¶
Độ phức tạp của thuật toán¶
Trong học phần này ta sẽ học:
- Time và Space Complexity
- Cách để tính Complexity
- Common Runtimes
- Asymtotic Notation
Thuật toán sắp xếp¶
Thuật toán tìm kiếm¶
Thuật toán cây¶
Thuật toán sơ đồ¶
Chuyển lại qua cấu trúc dữ liệu¶
Cấu trúc dữ liệu nâng cao
- Trie
- Segment Trees
- Fenwick Trees
- Disjoint Set
- Suffix Trees and Arrays
Cấu trúc thuật toán nâng cao¶
- B/B+
- Indexing
- Linear Indexing
- Tree-based Indexing
Các kĩ thuật giải quyết vấn đề¶
- Brute Force
- Backtracking
- Greedy Algorithms
- Divide and Conquer
- Dynamic Programming
- Randomised Algorithm
- Recursion
- Two Pointer Technique
- Sliding Window Technique
Các nền tảng luyện tập
LeetCode