# | Topic |
---|---|
1 | Giới thiệu về lớp học + cách luyện thuật toán trên Leetcode Hình thức: Video **Nội dung:** - Giảng viên giới thiệu về lớp học Leetcode, từ nội dung đến cách thức lập trình trên Leetcode. **Chi tiết:** - Giới thiệu về Lớp học Leetcode - Lời chào từ giảng viên - Một số chú ý của lớp học - Ngôn ngữ lập trình chính của khóa học - Hướng dẫn công cụ lập trình - Hướng dẫn làm bài tập - Hướng dẫn sử dụng Leetcode **Bài tập:** Bài tập làm quen với Leetcode. |
2 | Đào sâu vào phân tích thuật toán Hình thức: Video Phân tích thuật toán là một trong những kỹ năng quan trọng để đánh giá tốc độ của dòng code mà chúng ta viết. Trong bài này chúng ta cùng tìm hiểu khái niệm BigO, cách tìm BigO của một thuật số thuật toán phổ thông. Chi tiết:
|
3 | Chuỗi - String Hình thức: Video Chuỗi là một trong những cấu trúc dữ liệu vô cùng quan trọng giúp lưu trữ văn bản. Trong bài học này chúng ta cùng tìm hiểu cách tiếp cận một bài thuật toán liên quan tới chuỗi. Chi tiết nội dung:
Các dạng bài Leetcode thường gặp:
|
4 | Chữa bài tập phân tích thuật toán Hình thức: Zoom Nội dung: Giảng viên giải đáp thắc mắc về bài tập phân tích thuật toán cũng như lý thuyết bài tập chuỗi. |
5 | Mảng - Array Mảng trong Python giúp chúng ta lưu trữ nhiều kiểu dữ liệu liền nhau theo thứ tự. Chi tiết:
Một số dạng Leetcode hay gặp:
|
6 | Hai con trỏ - Two Pointers Kỹ thuật 2 con trỏ là một trong những kỹ thuật điển hình để tìm ra mảng con/ chuỗi con thỏa mãn một điều kiện cho trước. Chi tiết:
Một số dạng Leetcode hay gặp:
|
7 | Chữa bài tập Chuỗi + Mảng No content |
8 | Ngăn xếp và Hàng đợi - Stack & Queue Ngăn xếp có rất nhiều ứng dụng trong tiền xử lý trong trí tuệ nhân tạo. Các hệ thống chat real time sử dụng hàng đợi để xây dựng cơ chế truyền tải tin nhắn. Trong bài học này chúng ta cùng rút ra một số quy luật khi gặp dạng bài Leetcode này.
Video | Slide | Notebook |
9 | Đệ quy Cùng tìm cách học đệ quy một cách dễ hình dung nhất. Chi tiết:
|
10 | Chữa bài hai con trỏ + ngăn xếp Chữa các bài tập
|
11 | Thuật toán sắp xếp - Giải thuật tham lam Giải thuật tham lam Đôi khi chúng ta sử dụng giải thuật giam lam trong lập trình mà không hề hay biết. Ví dụ mua chanh là một trong ví dụ dễ hiệu để mô tả thuật toán này. Khi học xong thuật toán này bạn có thể xử lý được những dạng bài Leetcode như sau:
Video | Slide | Notebook |
12 | Đống - Heap Heap là một cấu trúc dữ liệu đặc biệt được thiết kế để tối ưu tính toán một số bài toán cụ thể sau.
Video | Slide | Notebook |
13 | Đồ thị - Graph Nếu bạn có thắc mắc mạng xã hội làm sao có thể đề xuất bạn chung cho bạn, thì đồ thị chính là một trong những mấu chốt mà bạn cần học. Trong bài học này chúng ta sẽ cùng sử dụng đồ thị để giải một số bài tập thú vị:
Video | Slide | Notebook |
14 | Chữa bài đệ quy + sắp xếp + giải thuật tham lam Chữa bài Leetcode
|
15 | Thuật toán BFS Tìm đường ngắn nhất trong đồ thị là một trong những dạng bài tập có rất nhiều câu hỏi Leetcode liên quan. Khi bạn học kỹ các dạng bài sau bạn sẽ hiểu tường tận được thuật toán này
Video | Slide | Notebook |
16 | 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.
Video | Slide | Notebook |
17 | Chữa bài Heap + Đồ thị Chữa bài Heap: 692 + 1054 + 767 + 857 Chữa bài đồ thị: 1042 |
18 | Thuật toán Dijkstra Nếu bạn thắc mắc tính năng tìm đường trên Google Maps đã từng hoạt động như thế nào, thì thuật toán Dijkstra chính là câu trả lời cho bạn. Video | Slide | Notebook |
19 | Cấu trúc dữ liệu Union Find Một cấu trúc dữ liệu giúp ta có thể phân cụm các phần tử có kết nối với nhau trong đồ thị. Đây là một trong những cấu trúc mạnh mẽ giúp giải quyết nhiều bài toán thú vị bao gồm
Video | Slide | Notebook |
20 | Chữa bài tập BFS + DFS No content |
21 | Toán học Làm việc với các phép tính toán lớn yêu cầu bạn cần hiểu một số định luật cơ bản. Một số dạng Toán sẽ giải quyết
Video | Slide | Notebook |
22 | Cây - Tree Một trong web chúng ta sử dụng hàng ngày được lưu trữ dưới dạng cây. Hiểu được cấu trúc này bạn sẽ vượt qua rất nhiều thử thách hóc búa từ các công ty công nghệ lớn. Các dạng bài sẽ giải quyết trong bài học này Bài toán duyệt/tạo/thay đổi cây Bài toán liên quan đến khoảng cách trong cây Video | Slide | Notebook |
23 | Tìm kiếm nhị phân - Binary Search Một kỹ thuật tìm kiếm loại trừ hiệu quả trong một số bài toán tối ưu mà bạn cần quan tâm. Các dạng bài sẽ giải quyết:
Video | Slide | Notebook |
24 | Chữa bài Dijkstra + Union Find Bài Dijkstra: 743 Bài Union Find: 684 + 1319 + 1579 |
25 | Cây tìm kiếm nhị phân - Binary Search Tree Dạng cây rất hay bắt gặp trong các bài phỏng vấn. Trong bài này chúng ta cùng tìm hiểu các thao tác cơ bản trên cây này nhé. Video | Slide | Notebook |
26 | Danh sách liên kết - Linked List Nếu bạn muốn xóa một phần tử khỏi mảng trong thời gian ngắn thì danh sách liên kết chính là một cấu trúc dữ liệu có thể bạn cần. Sử dụng danh sách liên kết để giải quyết một số bài toán sau:
Video | Slide | Notebook |
27 | Chữa bài toán + gợi ý các bài cây Chữa các bài tập toán bao gồm: 1344 + 1217 + 1716 + 360 Gợi ý các bài liên quan tới cây. |
28 | Quy hoạch động cơ bản - Knapsack Tìm ra lựa chọn tối ưu trong nhiều lựa chọn khác nhau là mục tiêu của thuật toán này. Tuy nhiên các bài toán ứng dụng được thuật toán này đôi khi ẩn sâu trong nhiều dạng khác nhau mà cần một vài biến đổi trước khi áp dụng được ngay. Trong bài học này chúng ta sẽ đề cập đến những dạng mà có thể quy về bài toán Knapsack quen thuộc. Video | Slide | Notebook |
29 | Ứng dụng quy hoạch động trong trí tuệ nhân tạo Chúng ta hoàn toàn có thể ứng dụng lập trình quy hoạch động trong một phần bài toán nhận diện âm thanh. Cùng khám phá ứng dụng này nhé. Video | Slide | Notebook |
30 | Chữa bài cây nhị phân + Tìm kiếm nhị phân No content |