เทคนิค sliding-window จะรักษาช่วงที่ต่อเนื่องกัน (ช่อง) บนอาร์เรย์หรือสตริง และเลื่อนแทนที่จะคำนวณใหม่ตั้งแต่ต้น เพื่อแก้ปัญหา subarray/substring จำนวนมากใน O(n)
ไอเดีย
ขยายช่องด้วยการเลื่อนขอบด้านขวา ลดลงด้วยการเลื่อนขอบด้านซ้ายเมื่อมีการละเมิดข้อจำกัด นำการคำนวณก่อนหน้านี้มาใช้ใหม่แทนที่จะสแกนซ้ำ
ตัวอย่าง: ผลรวมสูงสุดของช่องใดก็ได้ขนาด k
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
