Cấu Trúc Dữ Liệu Ngăn Xếp: Cơ Chế Và Các Trường Hợp Sử Dụng
Khái niệm cơ bản về Ngăn xếp (Stack)
Ngăn xếp (Stack) là một dạng cấu trúc dữ liệu tuyến tính, nơi mà các thao tác thêm mới hoặc xóa bỏ phần tử chỉ được phép thực hiện tại một đầu duy nhất. Đầu này được gọi là đỉnh ngăn xếp (Top), trong khi đầu đối diện được xem là đáy (Bottom).
Thao tác đưa phần tử vào ngăn xếp được gọi là đẩy (Push), còn thao ...
Đăng vào ngày 25 tháng 5 lúc 12:20
Bài Toán In Hình Tam Giác Từ Cuộc Thi Blue Bridge Cup C++B
Mô tả bài toán
Cho trước một dãy các hình tam giác được vẽ theo quy luật nhất định. Hãy phân tích logic của chương trình và điền vào phần code còn thiếu.
Hình ảnh mẫu
Với rank = 3:
*
* *
* *
* * * *
Với rank = 5:
*
* * ...
Đăng vào ngày 22 tháng 5 lúc 19:20
Tìm kiếm chuỗi chuyển động đặc trưng dài nhất từ dữ liệu khung hình video
Trong lĩnh vực xử lý video và phân tích chuyển động, việc xác định các mẫu chuyển động lặp lại là rất quan trọng. Một tác vụ phổ biến là tìm kiếm "chuyển động đặc trưng" dài nhất, tức là một đặc trưng (được biểu diễn dưới dạng tọa độ 2D, ví dụ: <x, y>) xuất hiện liên tục qua nhiều khung hình. Nếu hai đặc trưng giống hệt nhau (cùng tọa độ ...
Đăng vào ngày 22 tháng 5 lúc 07:53
Các Thuật Toán, Cấu Trúc Dữ Liệu và Mẫu Thiết Kế Cơ Bản trong Java
1-1. Tìm kiếm nhị phân
Mô tả thuật toán
Tìm kiếm nhị phân là một thuật toán hiệu quả để tìm kiếm một giá trị cụ thể trong một mảng đã được sắp xếp. Nguyên tắc hoạt động của nó dựa trên việc liên tục chia đôi không gian tìm kiếm. Các bước cơ bản bao gồm:
**Điều kiện tiên quyết**: Mảng đầu vào phải được sắp xếp (ví dụ, theo thứ tự tăng dần) ...
Đăng vào ngày 21 tháng 5 lúc 01:26
Chiến lược tối ưu hóa mã C++ bởi trình biên dịch
Trong phần này, chúng ta sẽ tìm hiểu về các thuật toán không sửa đổi và sửa đổi chuỗi, cũng như các thuật toán sắp xếp và các thuật toán khác trong thư viện chuẩn C++.
1. Thuật toán không sửa đổi chuỗi
Các thuật toán này không thay đổi các phần tử của vùng nhớ mà chúng hoạt động.
1.1 find và find_if
find(bắt_đầu, kết_thúc, giá_trị): Tìm phần t ...
Đăng vào ngày 20 tháng 5 lúc 12:24
Giải Pháp Tối Ưu Cho Các Bài Toán Thuật Toán Phỏng Vấn Kỹ Thuật
1. Tính Toán Tổng Dãy Số Với Chu Kỳ Đảo Dấu
Bài toán yêu cầu tính tổng của một dãy số nguyên dương liên tiếp từ 1 đến n, trong đó dấu của các số được thay đổi theo chu kỳ. Cụ thể, cứ mỗi m số thì dấu sẽ được đảo ngược một lần, bắt đầu với dấu âm. Điều kiện tiên quyết là n phải chia hết cho 2m.
Thay vì sử dụng vòng lặp để duyệt qua từng phần tử ...
Đăng vào ngày 20 tháng 5 lúc 08:06
Tìm kiếm nhị phân
Phân loại tìm kiếm
Tìm kiếm tuần tự: So sánh lần lượt phần tử cần tìm với toàn bộ dữ liệu đã có, nếu trùng khớp thì trả về vị trí.
Tìm kiếm nhị phân: Yêu cầu dữ liệu phải được sắp xếp (tăng hoặc giảm). Nếu không sắp xếp sẽ không thể thực hiện!
Cơ chế hoạt động
Tìm kiếm nhị phân hoạt động dựa trên nguyên lý chia để trị:
Xác định giá trị giữa ...
Đăng vào ngày 19 tháng 5 lúc 13:13
Giải quyết các bài toán thuật toán phổ biến bằng kỹ thuật Hai con trỏ
Kỹ thuật hai con trỏ (Two-Pointer) là một trong những phương pháp tối ưu nhất để xử lý các bài toán trên mảng hoặc chuỗi. Thay vì sử dụng các vòng lặp lồng nhau gây tốn kém về thời gian (O(n²)), hai con trỏ giúp đưa độ phức tạp về O(n). Dưới đây là cách áp dụng kỹ thuật này vào các bài toán thực tế.
1. Loại bỏ phần tử (LeetCode 27)
Bài toán yê ...
Đăng vào ngày 17 tháng 5 lúc 21:51
Phân tích lời giải các bài toán trong cuộc thi ACM/ICPC Qingdao Online
Bài toán: I Count Two Three
Cho trước số nguyên n, nhiệm vụ là tìm số nguyên nhỏ nhất k sao cho k >= n và k có dạng 2^a * 3^b * 5^c * 7^d. Với n
Đăng vào ngày 17 tháng 5 lúc 12:52
Ghi Chép Bài Tập Tháng 10
### CF1879F *2800 ★
Giá trị của một điểm được tính bằng h_i * ceil(a_i / x).
Bước đầu tiên là sử dụng phương pháp phân đoạn trực tiếp, chia thành sqrt(n) khoảng và duyệt qua từng khoảng sẽ có độ phức tạp là O(Tn * sqrt(a_i)).
Tuy nhiên không có bảo đảm về tổng n, nên ta cần tìm cách sử dụng log.
Nhớ lại chuỗi điều hòa, khi liệt kê x, các phần t ...
Đăng vào ngày 17 tháng 5 lúc 10:36