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([, , , , , ], )
