Bỏ qua

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