List of topics
Giới thiệu về lớp học + cách luyện thuật toán trên Leetcode
Đào sâu vào phân tích thuật toán
Chuỗi - String
Chữa bài tập phân tích thuật toán
Mảng - Array
Hai con trỏ - Two Pointers
Chữa bài tập Chuỗi + Mảng
Ngăn xếp và Hàng đợi - Stack & Queue
Đệ quy
Chữa bài hai con trỏ + ngăn xếp
Thuật toán sắp xếp - Giải thuật tham lam
Đống - Heap
Đồ thị - Graph
Chữa bài đệ quy + sắp xếp + giải thuật tham lam
Thuật toán BFS
Thuật toán DFS
Chữa bài Heap + Đồ thị
Thuật toán Dijkstra
Cấu trúc dữ liệu Union Find
Chữa bài tập BFS + DFS
Toán học
Cây - Tree
Tìm kiếm nhị phân - Binary Search
Chữa bài Dijkstra + Union Find
Cây tìm kiếm nhị phân - Binary Search Tree
Danh sách liên kết - Linked List
Chữa bài toán + gợi ý các bài cây
Quy hoạch động cơ bản - Knapsack
Ứng dụng quy hoạch động trong trí tuệ nhân tạo
Chữa bài cây nhị phân + Tìm kiếm nhị phân
Thuật toán DFS
Bên cạnh thuật toán tìm đường ngắn nhất, thuật toán tìm đường DFS hữu ích trong một số bài toán cụ thể khi bạn có thể lợi dụng tính chất của đệ quy để viết code ngắn gọn hơn.
Tuy nhiên để kiểm soát được thuật toán đệ quy cần có một cách tiếp cận chặt chẽ. Bạn sẽ học được kỹ năng đó trong bài học này.
- Bài toán liên quan đến tìm diện tích một vùng trong ma trận
- Tìm đường thỏa mãn một điều kiện K cho trước
- Bài toán kiểm tra chu trình trong đồ thị
- Dạng bài tô màu đồ thị
Video | Slide | Notebook
1. Giới thiệu DFS
1.1. 12.1.1. Giới thiệu DFS
2. Chi tiết DFS với Stack
2.1. 12.2.1. Khác nhau giữa BFS và DFS
2.2. 12.2.2. Độ phức tạp của DFS
2.3. [LC] 12.2.2.2. So sánh độ phức tạp của BFS và DFS.
Click to view more
2.4. 12.2.3. Chuẩn bị dữ liệu
2.5. 12.2.4. DFS sử dụng stack chi tiết
2.6. 12.2.5. DFS code
2.7. [LC] 12.2.6. Bạn nghĩ truy vết giữa DFS và BFS có khác nhau hay không?
Click to view more
2.8. 12.2.7. Tiến hành truy vết
3. DFS với đệ quy
3.1. 12.3.1. Giới thiệu DFS với đệ quy
3.2. 12.3.2. Chi tiết DFS với đệ quy
3.3. [LC] 12.3.3. Thử sắp xếp code DFS - đệ quy
Click to view more
3.4. [LC] 12.3.4. Đường này có phải đường ngắn nhất không?
Click to view more
3.5. [LC] 12.3.5. Đường này có phải đường ngắn nhất không?
Click to view more
4. Dạng bài phát hiện chu trình
4.1. 12.4.1. Phát hiện chu trình
4.2. 12.4.2. Phát hiện chu trình - trường hợp có
4.3. 12.4.3. Phát hiện chu trình - trường hợp không
5. Slide bài giảng
5.1. 12. DFS.pdf
5.2. 12.2. DFS - detectACycle.pdf
6. Bài tập
6.1. Leetcode 695 - Max Area of Island
Click to view more
6.2. Leetcode 934 - Shortest Bridge
Click to view more
6.3. Leetcode 207 - Course Schedule
Click to view more
6.4. Leetcode 1306 - Jump Game III
Click to view more
1. Giới thiệu DFS
1.1. 12.1.1. Giới thiệu DFS
2. Chi tiết DFS với Stack
2.1. 12.2.1. Khác nhau giữa BFS và DFS
2.2. 12.2.2. Độ phức tạp của DFS
2.3. [LC] 12.2.2.2. So sánh độ phức tạp của BFS và DFS.
2.4. 12.2.3. Chuẩn bị dữ liệu
2.5. 12.2.4. DFS sử dụng stack chi tiết
2.6. 12.2.5. DFS code
2.7. [LC] 12.2.6. Bạn nghĩ truy vết giữa DFS và BFS có khác nhau hay không?
2.8. 12.2.7. Tiến hành truy vết
3. DFS với đệ quy
3.1. 12.3.1. Giới thiệu DFS với đệ quy
3.2. 12.3.2. Chi tiết DFS với đệ quy
3.3. [LC] 12.3.3. Thử sắp xếp code DFS - đệ quy
3.4. [LC] 12.3.4. Đường này có phải đường ngắn nhất không?
3.5. [LC] 12.3.5. Đường này có phải đường ngắn nhất không?
4. Dạng bài phát hiện chu trình
4.1. 12.4.1. Phát hiện chu trình
4.2. 12.4.2. Phát hiện chu trình - trường hợp có
4.3. 12.4.3. Phát hiện chu trình - trường hợp không
5. Slide bài giảng
5.1. 12. DFS.pdf
5.2. 12.2. DFS - detectACycle.pdf
6. Bài tập
6.1. Leetcode 695 - Max Area of Island
6.2. Leetcode 934 - Shortest Bridge
6.3. Leetcode 207 - Course Schedule
6.4. Leetcode 1306 - Jump Game III