class SlidingWindow:
def max_sum_subarray(self, arr, k):
if len(arr) < k or k == 0:
return 0
window_sum = sum(arr[:k]) # sum of first window
max_sum = window_sum
for i in range(k, len(arr)):
window_sum += arr[i] - arr[i - k] # slide window right
if window_sum > max_sum:
max_sum = window_sum
return max_sum
# Driver code
arr = [1, 3, 2, 5, 7, 2, 4]
k = 3
sw = SlidingWindow()
print(sw.max_sum_subarray(arr, k))window_sum = sum(arr[:k]) # sum of first window
Calculate initial sum of the first window
window_sum += arr[i] - arr[i - k] # slide window right
Update window sum by removing left element and adding new right element
if window_sum > max_sum:
max_sum = window_sum
Keep track of maximum sum found so far