ਸਲਾਈਡਿੰਗ-ਵਿੰਡੋ ਤਕਨੀਕ ਇੱਕ ਸਮਮੀਪ ਰੇਂਜ (ਵਿੰਡੋ) ਨੂੰ ਐਰੇ ਜਾਂ ਸਟ੍ਰਿੰਗ ਉੱਤੇ ਨਿਯੰਤ੍ਰਿਤ ਕਰਦੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਸਲਾਈਡ ਕਰਦੀ ਹੈ ਬਿਨਾਂ ਸ਼ੁਰੂ ਤੋਂ ਦੁਬਾਰਾ ਗਣਨਾ ਕਰਿਆ, ਬਹੁਤ ਸਾਰੀਆਂ ਸਬੈਰੇ/ਸਬਸਟ੍ਰਿੰਗ ਸਮੱਸਿਆਵਾਂ ਨੂੰ O(n) ਵਿੱਚ ਹੱਲ ਕਰਦਾ ਹੈ।
ਵਿਚਾਰ
ਸੱਜੇ ਕਿਨਾਰੇ ਨੂੰ ਹਿਲਾ ਕੇ ਵਿੰਡੋ ਨੂੰ ਫੈਲਾਓ; ਜਦੋਂ ਕੋਈ ਸੀਮਾ ਭੰਗ ਹੋ ਤਾਂ ਖੱਬੇ ਕਿਨਾਰੇ ਨੂੰ ਹਿਲਾ ਕੇ ਇਸਨੂੰ ਸੁੰਘ ਲਓ। ਦੁਬਾਰਾ ਸਕੈਨ ਕਰਨ ਦੀ ਬਜਾਏ ਪਿਛਲੀ ਗਣਨਾ ਦੀ ਦੁਬਾਰਾ ਵਰਤੋਂ ਕਰੋ।
ਉਦਾਹਰਨ: ਆਕਾਰ k ਦੀ ਕਿਸੇ ਵੀ ਵਿੰਡੋ ਦਾ ਅਧਿਕਤਮ ਜੋੜ
():
window = (arr[:k])
best = window
i (k, (arr)):
window += arr[i] - arr[i - k]
best = (best, window)
best
max_window_sum([, , , , , ], )
