Kỹ thuật sliding window duy trì một phạm vi liên tục (cửa sổ) trên một mảng hoặc chuỗi và trượt nó thay vì tính lại từ đầu, giải nhiều bài toán mảng con/chuỗi con trong O(n).
Ý tưởng
Mở rộng cửa sổ bằng cách dịch cạnh phải; thu hẹp nó bằng cách dịch cạnh trái khi một ràng buộc bị vi phạm. Tái sử dụng phép tính trước đó thay vì quét lại.
Ví dụ: tổng lớn nhất của cửa sổ kích thước k bất kỳ
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
