Here’s an example implementation of Sliding Window:
Python
def maxSum(arr, k):
# length of the array
n = len(arr)
# length of array must be greater
# window size
if n < k:
print("Invalid")
return -1
# sum of first k elements
window_sum = sum(arr[:k])
max_sum = window_sum
# remove the first element of previous
# window and add the last element of
# the current window to calculate the
# the sums of remaining windows by
for i in range(n - k):
window_sum = window_sum - arr[i] + arr[i + k]
max_sum = max(window_sum, max_sum)
return max_sum
arr = [16, 12, 9, 19, 11, 8]
k = 3
print(maxSum(arr, k))
C++
#include <iostream>
#include <algorithm> // for std::max
// Returns maximum sum in a subarray of size k.
int maxSum(int arr[], int n, int k) {
// n must be greater
if (n < k) {
std::cout << "Invalid";
return -1;
}
// Sum of first window of size k
int window_sum = 0;
for (int i = 0; i < k; i++)
window_sum += arr[i];
// Compute sums of remaining windows by
// removing first element of previous
// window and adding last element of
// current window.
int max_sum = window_sum;
for (int i = k; i < n; i++) {
window_sum += (arr[i] - arr[i - k]);
max_sum = std::max(max_sum, window_sum);
}
return max_sum;
}
int main() {
int n = 6, k = 3; // Adjusted to match the size of the array
int arr[] = {16, 12, 9, 19, 11, 8};
std::cout << maxSum(arr, n, k);
return 0;
}
Click to view another code.
Python
lst = [1,2,3,4,5,6,7,8]
def sliding_window(elements, window_size):
if len(elements) <= window_size:
return elements
for i in range(len(elements)):
print(elements[i:i+window_size])
Output
sliding_window(lst, 3)
Output:
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8]
[8]
Python
# modified code to stop on window size
lst = [1,2,3,4,5,6,7,8]
def sliding_window(elements, window_size):
if len(elements) <= window_size:
return elements
for i in range(len(elements)- window_size + 1):
print(elements[i:i+window_size])
Output
sliding_window(lst, 3)
Output:
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
Python
# sliding window to calculate substrings
s = "eidbaooo"
def sliding_window(elements, window_size):
if len(elements) <= window_size:
return elements
for i in range(len(elements)- window_size + 1):
print(elements[i:i+window_size])
Output
sliding_window(s, 2)
Output:
ei
id
db
ba
ao
oo
oo
References:
FavTutor. (n.d.). Sliding Window Algorithm (with Java, C++ and Python code). Retrieved August 14, 2023, from https://favtutor.com/blogs/sliding-window-algorithm
Kumar, D. K. (2021, July 2). Implement a sliding window using python. Geek Culture. Retrieved August 14, 2023, from https://medium.com/geekculture/implement-a-sliding-window-using-python-31d1481842a7