Link to original video by Sahil & Sarra
I gave 127 interviews. Top 5 Algorithms they asked me.

Tóm tắt video: "Tôi đã tham gia 127 cuộc phỏng vấn. 5 thuật toán hàng đầu họ hỏi tôi."
Tóm tắt ngắn:
- Video này thảo luận về 5 thuật toán hàng đầu được hỏi trong các cuộc phỏng vấn lập trình, nhấn mạnh rằng bạn không cần phải biết tất cả các thuật toán để thành công.
- Các thuật toán được đề cập bao gồm: Top k elements, Sliding window, Backtracking, Dynamic Programming, và Breadth First Search/Depth First Search.
- Video cung cấp các ví dụ cụ thể về cách áp dụng các thuật toán này trong các vấn đề lập trình thực tế.
- Video cũng đề cập đến các cấu trúc dữ liệu như heap và cách chúng hỗ trợ hiệu quả cho các thuật toán.
Tóm tắt chi tiết:
Phần 1: Giới thiệu
- Người nói giới thiệu video là về 5 thuật toán hàng đầu được hỏi trong các cuộc phỏng vấn lập trình.
- Ông nhấn mạnh rằng bạn không cần phải biết tất cả các thuật toán để thành công, mà chỉ cần tập trung vào những thuật toán phổ biến nhất.
- Ông giới thiệu quy tắc 80-20 (Pareto's principle) và giải thích rằng 20% các thuật toán sẽ được hỏi trong 80% các cuộc phỏng vấn.
Phần 2: Thuật toán Top k elements
- Thuật toán này được sử dụng để tìm k phần tử lớn nhất hoặc nhỏ nhất trong một mảng.
- Ví dụ: tìm k số lớn nhất trong một mảng.
- Cách tiếp cận tối ưu là sử dụng cấu trúc dữ liệu heap để theo dõi k số lớn nhất.
- Độ phức tạp thời gian của thuật toán này là nlog(K) thay vì nlogn.
Phần 3: Thuật toán Sliding window
- Thuật toán này được sử dụng để giải quyết các vấn đề liên quan đến việc tìm kiếm chuỗi con lớn nhất hoặc nhỏ nhất trong một chuỗi.
- Ví dụ: tìm chuỗi con không chứa ký tự trùng lặp lớn nhất.
- Thuật toán sử dụng hai con trỏ (left và right) để xác định cửa sổ trượt.
- Con trỏ right được di chuyển để mở rộng cửa sổ, trong khi con trỏ left được di chuyển để thu hẹp cửa sổ.
Phần 4: Backtracking
- Backtracking là một kỹ thuật giải quyết vấn đề bằng cách khám phá tất cả các giải pháp có thể bằng cách xây dựng chúng từng bước một.
- Khi gặp trạng thái không hợp lệ, backtracking sẽ quay lại và thử khám phá các giải pháp khác.
- Backtracking thường được triển khai bằng đệ quy.
- Ví dụ: giải quyết bài toán Combination sum, tìm tất cả các tổ hợp số cộng lại bằng tổng mục tiêu.
Phần 5: Dynamic Programming
- Dynamic Programming là một kỹ thuật giải quyết vấn đề bằng cách chia nhỏ vấn đề thành các vấn đề con nhỏ hơn.
- Giải pháp cho các vấn đề con được lưu trữ để tránh tính toán lại.
- Ví dụ: giải quyết bài toán Combination sum bằng Dynamic Programming.
Phần 6: Breadth First Search (BFS) và Depth First Search (DFS)
- BFS và DFS là hai thuật toán được sử dụng để duyệt đồ thị.
- BFS khám phá các đỉnh kề trước khi di chuyển đến các đỉnh sâu hơn.
- DFS khám phá càng xa càng tốt theo mỗi nhánh.
- BFS được triển khai bằng hàng đợi, trong khi DFS được triển khai bằng ngăn xếp.
- Ví dụ: tìm đường đi ngắn nhất giữa hai đỉnh trong đồ thị.
Kết luận:
- Video nhấn mạnh tầm quan trọng của việc hiểu biết về các cấu trúc dữ liệu để thành thạo các thuật toán.
- Video khuyến khích người xem học thêm về các thuật toán và cấu trúc dữ liệu để thành công trong các cuộc phỏng vấn lập trình.