Cửa sổ trượt tìm dãy con cố định có tổng lớn nhất
Hệ thống phân tích giao dịch tại AI Empire Academy cần tìm khoảng thời gian cao điểm liên tục gồm k phút có tổng số lượng request gửi về máy chủ là lớn nhất.
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: sliding window concept, arrays.
Nội dung đề bài
Mục tiêu kiến thức
- Cài đặt kỹ thuật Cửa sổ trượt cố định (Fixed-size Sliding Window) với độ phức tạp O(N).
- Tránh tính lại tổng từ đầu ở mỗi bước trượt (O(1) cho mỗi dịch chuyển).
- Xử lý mảng chứa toàn số âm bằng cách khởi tạo giá trị lớn nhất chính xác.
Mô tả bài toán
Hệ thống phân tích giao dịch tại AI Empire Academy cần tìm khoảng thời gian cao điểm liên tục gồm k phút có tổng số lượng request gửi về máy chủ là lớn nhất.
Hãy viết hàm max_sum_fixed_window(nums: list[int], k: int) -> int nhận vào danh sách số nguyên nums và độ dài cửa sổ k.
- Trả về tổng lớn nhất của một dãy con liên tục gồm đúng k phần tử.
- Nếu k ≤ 0 hoặc k > len(nums), hàm phải ném ra ngoại lệ
ValueError("Do dai cua so k khong hop le").
Quy tắc cập nhật cuốn chiếu:
- Tính tổng của k phần tử đầu tiên: S0 = ∑i=0k-1 nums[i].
- Khi dịch cửa sổ sang phải một vị trí (từ i-1 sang i):
Smới = Scũ - nums[i - k] + nums[i]
- Cập nhật giá trị tổng lớn nhất trong O(1).
Input
nums: Danh sách số nguyên.k: Độ dài cửa sổ nguyên dương.
Output
Số nguyên int là tổng lớn nhất tìm được.
Ràng buộc
- 1 ≤ len(nums) ≤ 105.
- -106 ≤ nums[i] ≤ 106.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
`nums = [2, 1, 5, 1, 3, 2], k = 3`Output
`9`Giải thích
Các cửa sổ độ dài 3 là:
[2, 1, 5]có tổng = 8[1, 5, 1]có tổng = 7[5, 1, 3]có tổng = 9 ⇒ Tổng lớn nhất là 9.[1, 3, 2]có tổng = 6
Ví dụ 2
Input
`nums = [-2, -5, -1, -8], k = 2`Output
`-6`Giải thích
Dãy con [-5, -1] có tổng là -6, lớn nhất trong số các đoạn con độ dài 2.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
