1. Giới thiệu về lớp học + cách luyện thuật toán trên Leetcode
Nội dung: Giảng viên giới thiệu về lớp học Leetcode, nội dung, cách thức lập trình và luyện tập trên Leetcode.
Chi tiết: Lời chào từ giảng viên, tổng quan khóa học.
2. Đào sâu vào phân tích thuật toán
Nội dung: Tìm hiểu khái niệm độ phức tạp thuật toán (BigO Notation) và cách phân tích hiệu quả của code.
3. Chuỗi - String
Nội dung: Các kỹ thuật và phương pháp tiếp cận bài toán liên quan đến xử lý chuỗi.
4. Chữa bài tập phân tích thuật toán
Nội dung: Giải đáp thắc mắc về bài tập phân tích thuật toán và lý thuyết bài tập chuỗi.
5. Mảng - Array
Nội dung: Giới thiệu về mảng, kỹ thuật tổng dồn/tích dồn, làm việc với ma trận, xoay ma trận.
6. Hai con trỏ - Two Pointers
Nội dung: Kỹ thuật hai con trỏ để tìm mảng con/chuỗi con thỏa mãn điều kiện, cách nhận diện bài toán.
7. Chữa bài tập Chuỗi + Mảng
Nội dung: Giải các bài tập Leetcode liên quan đến Chuỗi và Mảng.
8. Ngăn xếp và Hàng đợi - Stack & Queue
Nội dung: Ứng dụng của Stack và Queue trong các bài toán thực tế và thuật toán.
9. Đệ quy
Nội dung: Cách tiếp cận và hiểu đệ quy một cách trực quan (đệ quy xuôi, đệ quy ngược, quy tắc đệ quy).
10. Chữa bài hai con trỏ + ngăn xếp
Nội dung: Chữa bài tập Leetcode: Hai con trỏ (845, 3, 1234), Ngăn xếp (856, 739, 503).
11. Thuật toán sắp xếp - Giải thuật tham lam
Nội dung: Các thuật toán sắp xếp cơ bản và nâng cao, giới thiệu về giải thuật tham lam qua ví dụ.
12. Đống - Heap
Nội dung: Cấu trúc dữ liệu Heap và ứng dụng trong bài toán tìm K phần tử, sắp xếp.
13. Đồ thị - Graph
Nội dung: Các khái niệm cơ bản về đồ thị, cách biểu diễn và các thuật toán duyệt đồ thị cơ bản.
14. Chữa bài đệ quy + sắp xếp + giải thuật tham lam
Nội dung: Chữa bài tập Leetcode: Sắp xếp + tham lam (1333, 252, 56, 253, 1710, 121).
15. Thuật toán BFS (Breadth-First Search)
Nội dung: Ứng dụng BFS trong tìm đường ngắn nhất trên đồ thị không có trọng số.
16. Thuật toán DFS (Depth-First Search)
Nội dung: Ứng dụng DFS trong các bài toán tìm kiếm, duyệt đồ thị, kiểm tra chu trình.
17. Chữa bài Heap + Đồ thị
Nội dung: Chữa bài tập Leetcode: Heap (692, 1054, 767, 857), Đồ thị (1042).
18. Thuật toán Dijkstra
Nội dung: Tìm đường đi ngắn nhất trên đồ thị có trọng số dương.
19. Cấu trúc dữ liệu Union Find
Nội dung: Cấu trúc dữ liệu hiệu quả cho các bài toán liên quan đến tập hợp không giao nhau, kiểm tra thành phần liên thông.
20. Chữa bài tập BFS + DFS
Nội dung: Giải các bài tập Leetcode ứng dụng thuật toán BFS và DFS.
21. Toán học
Nội dung: Các khái niệm toán học thường gặp trong giải thuật (số học, tổ hợp, xác suất cơ bản).
22. Cây - Tree
Nội dung: Các khái niệm về cây, các loại cây cơ bản, thuật toán duyệt cây.
23. Tìm kiếm nhị phân - Binary Search
Nội dung: Kỹ thuật tìm kiếm nhị phân trên mảng đã sắp xếp và ứng dụng trong các bài toán tối ưu.
24. Chữa bài Dijkstra + Union Find
Nội dung: Chữa bài tập Leetcode: Dijkstra (743), Union Find (684, 1319, 1579).
25. Cây tìm kiếm nhị phân - Binary Search Tree (BST)
Nội dung: Các thao tác trên BST (tìm kiếm, thêm, xóa), tính chất và ứng dụng.
26. Danh sách liên kết - Linked List
Nội dung: Các loại danh sách liên kết, thao tác và các bài toán thường gặp.
27. Chữa bài toán + gợi ý các bài cây
Nội dung: Chữa các bài tập toán (1344, 1217, 1716, 360). Gợi ý giải các bài tập liên quan đến cây.
28. Quy hoạch động cơ bản - Knapsack
Nội dung: Giới thiệu về quy hoạch động, các bài toán kinh điển như Knapsack.
29. Ứng dụng quy hoạch động trong trí tuệ nhân tạo
Nội dung: Khám phá các ứng dụng của quy hoạch động trong các bài toán AI, ví dụ nhận diện âm thanh.
30. Chữa bài cây nhị phân + Tìm kiếm nhị phân
Nội dung: Giải các bài tập Leetcode liên quan đến Cây nhị phân và Tìm kiếm nhị phân.