Ưu đãi trong tuần: Nhập mã UD50 giảm 50k cho đơn từ 300k!
Trang chủ
Menu

Algorithms and Data Structures in Python (INTERVIEW Q&A)

Cấu trúc Dữ liệu và Giải thuật trong Python (Hỏi & Đáp Phỏng vấn)

Cấu trúc Dữ liệu và Giải thuật trong Python (Hỏi & Đáp Phỏng vấn)

Hướng dẫn triển khai cấu trúc dữ liệu, thuật toán đồ thị và sắp xếp từ đầu, kèm câu hỏi phỏng vấn!

4.8
(4,381 đánh giá)
29,775 học viên
Giảng viên
Holczer Balazs
Phụ đề Việt chất lượng cao Phụ đề tiếng Anh Bán chạy Đánh giá cao
50.000đ 499.000đ -90%
✓ Xem giỏ hàng và thanh toán
Bao gồm phụ đề tiếng Việt, tiếng Anh
23.5 giờ video
213 bài giảng
44 bài quiz
14 bài coding
Truy cập vĩnh viễn
Học trên mọi thiết bị
Cập nhật: 11/09/2026

Bạn sẽ học được gì

Hiểu về mảng và danh sách liên kết
Hiểu về ngăn xếp và hàng đợi
Hiểu về cấu trúc dữ liệu dạng cây (cây tìm kiếm nhị phân)
Hiểu về cây cân bằng (cây AVL và cây đỏ-đen)
Hiểu về cấu trúc dữ liệu heap
Hiểu về băm, bảng băm và từ điển
Hiểu sự khác biệt giữa cấu trúc dữ liệu và kiểu dữ liệu trừu tượng
Hiểu về duyệt đồ thị (BFS và DFS)
Hiểu các thuật toán tìm đường đi ngắn nhất như phương pháp Dijkstra hay Bellman-Ford
Hiểu về cây khung nhỏ nhất (thuật toán Prim)
Hiểu về các thuật toán sắp xếp
Có khả năng phát triển thuật toán của riêng bạn
Nắm vững tư duy giải thuật
Có khả năng phát hiện và sửa các đoạn mã kém hiệu quả

Yêu cầu

Kiến thức cơ bản về Python
Một số kiến thức nền tảng lý thuyết (ký hiệu Big O)

Đối tượng phù hợp

Dành cho lập trình viên Python mới bắt đầu quan tâm đến đồ thị, thuật toán và cấu trúc dữ liệu

Nội dung khóa học

35 phần • 209 bài giảng
1 Giới thiệu
2 Cơ bản về lý thuyết độ phức tạp
1 Cài đặt Python
2 Cài đặt PyCharm
1 Tại sao chúng ta cần cấu trúc dữ liệu?
2 Cấu trúc dữ liệu và kiểu dữ liệu trừu tượng
1 Cấu trúc dữ liệu mảng là gì?
2 List trong Python là gì?
3 Giới thiệu mảng - các thao tác
4 List trong Python
5 List trong Python - các thao tác nâng cao
6 List trong Python - List Comprehension
1 Giải pháp đảo ngược mảng tại chỗ
2 Giải pháp bài toán Palindrome
3 Giải pháp bài toán đảo ngược số nguyên
4 Giải pháp bài toán Anagram
1 Danh sách liên kết là gì?
2 Giới thiệu danh sách liên kết - các thao tác
3 Ưu và nhược điểm của danh sách liên kết
4 Triển khai danh sách liên kết I
5 Triển khai danh sách liên kết II
6 Triển khai danh sách liên kết III
7 Xem lại thao tác xóa
8 So sánh danh sách liên kết và mảng
9 Ứng dụng thực tế của danh sách liên kết
1 Danh sách liên kết đôi là gì?
2 Triển khai danh sách liên kết đôi
3 So sánh thời gian chạy: danh sách liên kết và mảng
1 Giải pháp tìm nút giữa trong danh sách liên kết
2 Giải pháp đảo ngược danh sách liên kết tại chỗ
1 Ngăn xếp là gì?
2 Ngăn xếp trong quản lý bộ nhớ (stack và heap)
3 Minh họa bộ nhớ stack
4 Triển khai ngăn xếp
5 Ứng dụng thực tế của ngăn xếp
1 Hàng đợi là gì?
2 Triển khai hàng đợi
1 Tổng quan bài toán tìm giá trị lớn nhất trong stack
2 Giải pháp bài toán tìm giá trị lớn nhất trong stack
3 Bài toán hàng đợi sử dụng stack
4 Giải pháp bài toán hàng đợi sử dụng stack
5 Giải pháp bài toán hàng đợi sử dụng stack - đệ quy
1 Cây tìm kiếm nhị phân là gì?
2 Lý thuyết cây tìm kiếm nhị phân - tìm kiếm, chèn
3 Lý thuyết cây tìm kiếm nhị phân - xóa
4 Lý thuyết cây tìm kiếm nhị phân - duyệt theo thứ tự in-order
5 Ưu và nhược điểm của cây tìm kiếm nhị phân
6 Triển khai cây tìm kiếm nhị phân I
7 Triển khai cây tìm kiếm nhị phân II
8 Minh họa bộ nhớ stack - tìm phần tử lớn nhất (nhỏ nhất)
9 Minh họa bộ nhớ stack - duyệt cây
10 Triển khai cây tìm kiếm nhị phân III - thao tác xóa
11 Ứng dụng thực tế của cây
1 Giải pháp so sánh hai cây nhị phân
1 Lý do đằng sau cây tìm kiếm nhị phân cân bằng
2 Cây AVL là gì?
3 Giới thiệu cây AVL - chiều cao
4 Giới thiệu cây AVL - phép xoay
5 Giới thiệu cây AVL - minh họa
6 Triển khai cây AVL I
7 Triển khai cây AVL II
8 Triển khai cây AVL III
9 Triển khai cây AVL IV
10 Triển khai cây AVL V
11 Ứng dụng thực tế của cây tìm kiếm nhị phân cân bằng
1 Cây đỏ-đen là gì?
2 Logic đằng sau cây đỏ-đen
3 Cây đỏ-đen - các trường hợp tô lại màu và xoay
4 Minh họa cây đỏ-đen
5 Triển khai cây đỏ-đen I
6 Triển khai cây đỏ-đen II
7 Triển khai cây đỏ-đen III
8 Triển khai cây đỏ-đen IV
9 Sự khác biệt giữa cây đỏ-đen và cây AVL
1 Hàng đợi ưu tiên là gì?
2 Giới thiệu heap - cơ bản
3 Giới thiệu heap - biểu diễn bằng mảng
4 Giới thiệu heap - thao tác xóa
5 Sử dụng cấu trúc heap để sắp xếp (heapsort)
6 Giới thiệu heap - độ phức tạp các thao tác
7 Binomial heap và Fibonacci heap
8 Triển khai heap I
9 Triển khai heap II
10 Triển khai heap III
11 Heap trong Python
1 Giải pháp kiểm tra tính chất heap
2 Giải pháp chuyển max heap thành min heap
1 Mảng kết hợp là gì?
2 Giới thiệu bảng băm - cơ bản
3 Giới thiệu bảng băm - xung đột
4 Giới thiệu bảng băm - thay đổi kích thước động
5 Triển khai dò tuyến tính I
6 Triển khai dò tuyến tính II
7 Triển khai dò tuyến tính III
8 Từ điển trong Python
9 Tại sao sử dụng số nguyên tố trong băm?
10 Ứng dụng thực tế của băm
1 Tổng quan lý thuyết đồ thị
2 Ma trận kề và danh sách kề
3 Ứng dụng của đồ thị
1 Giới thiệu tìm kiếm theo chiều rộng (BFS)
2 Triển khai tìm kiếm theo chiều rộng
3 Ứng dụng của tìm kiếm theo chiều rộng
4 WebCrawler là gì? (lõi của công cụ tìm kiếm)
5 Triển khai cơ bản WebCrawler
1 Giới thiệu tìm kiếm theo chiều sâu
2 Triển khai tìm kiếm theo chiều sâu
3 Ứng dụng của tìm kiếm theo chiều sâu
4 Quản lý bộ nhớ của thuật toán duyệt đồ thị
1 Câu hỏi phỏng vấn #1 - triển khai DFS bằng đệ quy
2 Câu hỏi phỏng vấn #1 - giải pháp
3 Tìm kiếm theo chiều sâu và minh họa bộ nhớ stack
4 Câu hỏi phỏng vấn #2 - sử dụng BFS tìm đường ra khỏi mê cung
5 Câu hỏi phỏng vấn #2 - giải pháp
1 Bài toán đường đi ngắn nhất là gì?
2 Minh họa thuật toán Dijkstra
3 Triển khai thuật toán Dijkstra I - Cạnh, Nút
4 Triển khai thuật toán Dijkstra II - thuật toán
5 Triển khai thuật toán Dijkstra III - kiểm thử
6 Thuật toán Dijkstra với biểu diễn ma trận kề
7 Triển khai biểu diễn ma trận kề
8 Ứng dụng thuật toán đường đi ngắn nhất
9 Phương pháp đường găng (CPM) là gì?
1 Thuật toán Bellman-Ford là gì?
2 Minh họa thuật toán Bellman-Ford
3 Triển khai thuật toán Bellman-Ford I - Nút, Cạnh
4 Triển khai thuật toán Bellman-Ford II - thuật toán
5 Triển khai thuật toán Bellman-Ford III - kiểm thử
6 Tiếp cận tham lam hay quy hoạch động?
1 Câu hỏi phỏng vấn #1 - phát hiện chu trình âm trên thị trường FOREX
2 Cách sử dụng thuật toán Bellman-Ford trên FOREX?
3 Câu hỏi phỏng vấn #1 - giải pháp
1 Cấu trúc dữ liệu tập hợp rời nhau là gì?
2 Minh họa tập hợp rời nhau
3 Giới thiệu thuật toán Kruskal
4 Triển khai thuật toán Kruskal I - các lớp cơ bản
5 Triển khai thuật toán Kruskal II - tập hợp rời nhau
6 Triển khai thuật toán Kruskal III - thuật toán
7 Triển khai thuật toán Kruskal VI - kiểm thử
1 Thuật toán Prim-Jarnik là gì?
2 Triển khai thuật toán Prim-Jarnik I
3 Triển khai thuật toán Prim-Jarnik II
4 So sánh các phương pháp tìm cây khung
5 Ứng dụng của cây khung
1 Chu trình Hamilton là gì?
2 Bài toán người bán hàng
3 Triển khai bài toán người bán hàng
4 TSP và minh họa bộ nhớ stack
5 Tại sao sử dụng siêu heuristic?
1 Giới thiệu tìm kiếm vét cạn
2 Triển khai thuật toán tìm kiếm chuỗi con vét cạn
3 Giới thiệu thuật toán Rabin-Karp
4 Triển khai thuật toán Rabin-Karp
5 Giới thiệu thuật toán Knuth-Morris-Pratt
6 Xây dựng bảng khớp một phần - minh họa trực quan
7 Triển khai thuật toán Knuth-Morris-Pratt
8 Giới thiệu thuật toán Z
9 Minh họa thuật toán Z
10 Triển khai thuật toán Z
11 So sánh các thuật toán tìm kiếm chuỗi con
12 Ứng dụng của tìm kiếm chuỗi con
1 Giới thiệu về sắp xếp
2 Tính ổn định (stability) trong sắp xếp là gì?
3 Sắp xếp thích ứng (adaptive sorting) là gì?
4 Giới thiệu thuật toán Bogo sort
5 Triển khai thuật toán Bogo sort
6 Giới thiệu thuật toán Sắp xếp nổi bọt (Bubble sort)
7 Triển khai thuật toán Sắp xếp nổi bọt
8 Giới thiệu thuật toán Sắp xếp chọn (Selection sort)
9 Triển khai thuật toán Sắp xếp chọn
10 Giới thiệu thuật toán Sắp xếp chèn (Insertion sort)
11 Triển khai thuật toán Sắp xếp chèn
12 Giải pháp - sắp xếp đối tượng tùy chỉnh với Insertion sort
13 Giới thiệu thuật toán Sắp xếp Shell (Shell sort)
14 Triển khai thuật toán Sắp xếp Shell
15 Giới thiệu thuật toán Sắp xếp nhanh (Quicksort)
16 Giới thiệu Quicksort - ví dụ minh họa
17 Triển khai thuật toán Quicksort
18 Phân vùng kiểu Hoare và phân vùng kiểu Lomuto
19 Kịch bản xấu nhất của Quicksort là gì?
20 Giới thiệu thuật toán Sắp xếp trộn (Merge sort)
21 Triển khai thuật toán Sắp xếp trộn
22 Bộ nhớ stack và minh họa Merge sort
23 Giới thiệu thuật toán lai (Hybrid algorithms)
24 Thuật toán sắp xếp không dựa trên so sánh
25 Giới thiệu thuật toán Sắp xếp đếm (Counting sort)
26 Triển khai thuật toán Sắp xếp đếm
27 Giới thiệu thuật toán Sắp xếp theo cơ số (Radix sort)
28 Triển khai thuật toán Sắp xếp theo cơ số
29 Đo lường sự khác biệt thời gian chạy
1 Giải đáp câu hỏi phỏng vấn #1
2 Giải đáp câu hỏi phỏng vấn #2
3 Giải đáp câu hỏi phỏng vấn #3
1 Tổng quan bài toán Cờ Hà Lan (Dutch national flag)
2 Lý thuyết bài toán Cờ Hà Lan
3 Giải pháp bài toán Cờ Hà Lan
4 Tổng quan bài toán Hứng nước mưa (Trapping rain water)
5 Lý thuyết bài toán Hứng nước mưa
6 Giải pháp bài toán Hứng nước mưa
1 Cách đo thời gian chạy của thuật toán
2 Minh họa lý thuyết độ phức tạp
3 Ký hiệu độ phức tạp - big O (ordo)
4 Ký hiệu độ phức tạp - big Ω (omega)
5 Ký hiệu độ phức tạp - big θ (theta)
6 Thời gian chạy của thuật toán
7 Các lớp độ phức tạp
8 Phân tích thuật toán - vòng lặp
1 Hướng đi tiếp theo
1 Tải tài liệu khóa học (slide và mã nguồn)

Giới thiệu khóa học

This course is about data structures, algorithms and graphs. We are going to implement the problems in Python programming language. I highly recommend typing out these data structures and algorithms several times on your own in order to get a good grasp of it.

So what are you going to learn in this course?

Section 1:

  • setting up the environment

  • differences between data structures and abstract data types

Section 2 - Arrays:

  • what is an array data structure

  • arrays related interview questions

Section 3 - Linked Lists:

  • linked list data structure and its implementation

  • doubly linked lists

  • linked lists related interview questions

Section 4 - Stacks and Queues:

  • stacks and queues

  • stack memory and heap memory

  • how the stack memory works exactly?

  • stacks and queues related interview questions


Section 5 - Binary Search Trees:

  • what are binary search trees

  • practical applications of binary search trees

  • problems with binary trees

Section 6 - Balanced Binary Trees (AVL Trees and Red-Black Trees):

  • why to use balanced binary search trees

  • AVL trees

  • red-black trees

Section 7 - Priority Queues and Heaps:

  • what are priority queues

  • what are heaps

  • heapsort algorithm overview

Section 8 - Hashing and Dictionaries:

  • associative arrays and dictionaries

  • how to achieve O(1) constant running time with hashing

Section 9 - Graph Traversal:

  • basic graph algorithms

  • breadth-first

  • depth-first search

  • stack memory visualization for DFS

Section 10 - Shortest Path problems (Dijkstra's and Bellman-Ford Algorithms):

  • shortest path algorithms

  • Dijkstra's algorithm

  • Bellman-Ford algorithm

  • how to detect arbitrage opportunities on the FOREX?

Section 11 - Spanning Trees (Kruskal's and Prim's Approaches):

  • what are spanning trees

  • what is the union-find data structure and how to use it

  • Kruskal's algorithm theory and implementation as well

  • Prim's algorithm

Section 12 - Substring Search Algorithms

  • what are substring search algorithms and why are they important in real world softwares

  • brute-force substring search algorithm

  • hashing and Rabin-Karp method

  • Knuth-Morris-Pratt substring search algorithm

  • Z substring search algorithm (Z algorithm)

  • implementations in Python

Section 13 - Hamiltonian Cycles (Travelling Salesman Problem)

  • Hamiltonian cycles in graphs

  • what is the travelling salesman problem?

  • how to use backtracking to solve the problem

  • meta-heuristic approaches to boost algorithms

Section 14 - Sorting Algorithms

  • sorting algorithms

  • bubble sort, selection sort and insertion sort

  • quicksort and merge sort

  • non-comparison based sorting algorithms

  • counting sort and radix sort

Section 15 - Algorithms Analysis

  • how to measure the running time of algorithms

  • running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations

  • complexity classes

  • polynomial (P) and non-deterministic polynomial (NP) algorithms

  • O(1), O(logN), O(N) and several other running time complexities

In the first part of the course we are going to learn about basic data structures such as linked lists, stacks, queues, binary search trees, heaps and some advanced ones such as AVL trees and red-black trees.. The second part will be about graph algorithms such as spanning trees, shortest path algorithms and graph traversing. We will try to optimize each data structure as much as possible.

In each chapter I am going to talk about the theoretical background of each algorithm or data structure, then we are going to write the code step by step in Python.

Most of the advanced algorithms relies heavily on these topics so it is definitely worth understanding the basics. These principles can be used in several fields: in investment banking, artificial intelligence or electronic trading algorithms on the stock market. Research institutes use Python as a programming language in the main: there are a lot of library available for the public from machine learning to complex networks.

Thanks for joining the course, let's get started!

Khóa học liên quan

Khám phá thêm các khoá học cùng chủ đề

Hiển thị tất cả khoá học Computer Science
Hiển thị tất cả khoá học Data Structures
Hiển thị tất cả khoá học Programming
Hiển thị tất cả khoá học Python
Zalo
Tôi có thể tư vấn khoá học cho bạn 😊