0
0
Rest APIprogramming~10 mins

Sliding window algorithm in Rest API - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Sliding window algorithm
Start with window at beginning
Check window size
Process current window
Slide window forward by 1
More elements?
NoEnd
Back to Check window size
The sliding window algorithm moves a fixed-size window over data, processing each window step by step.
Execution Sample
Rest API
def max_sum_subarray(arr, k):
    max_sum = 0
    window_sum = 0
    for i in range(len(arr)):
        window_sum += arr[i]
        if i >= k - 1:
            max_sum = max(max_sum, window_sum)
            window_sum -= arr[i - k + 1]
This code finds the maximum sum of any subarray of size k by sliding a window over the array.
Execution Table
Stepi (index)window_sum before addAdd arr[i]window_sum after addCondition i >= k-1max_sum updateSubtract arr[i-k+1]window_sum after subtract
100arr[0]=22Falsemax_sum=0
212arr[1]=13Falsemax_sum=0
323arr[2]=58Truemax_sum=8Subtract arr[0]=26
436arr[3]=17Truemax_sum=8Subtract arr[1]=16
546arr[4]=39Truemax_sum=9Subtract arr[2]=54
654arr[5]=26Truemax_sum=9Subtract arr[3]=15
765arr[6]=16Truemax_sum=9Subtract arr[4]=33
873arr[7]=25Truemax_sum=9Subtract arr[5]=23
983arr[8]=14Truemax_sum=9Subtract arr[6]=13
1093arr[9]=47Truemax_sum=9Subtract arr[7]=25
11105arr[10]=38Truemax_sum=9Subtract arr[8]=17
12117arr[11]=29Truemax_sum=9Subtract arr[9]=45
13125arr[12]=16Truemax_sum=9Subtract arr[10]=33
14133arr[13]=25Truemax_sum=9Subtract arr[11]=23
15143arr[14]=14Truemax_sum=9Subtract arr[12]=13
16153arr[15]=25Truemax_sum=9Subtract arr[13]=23
17163arr[16]=14Truemax_sum=9Subtract arr[14]=13
18173arr[17]=25Truemax_sum=9Subtract arr[15]=23
19183arr[18]=14Truemax_sum=9Subtract arr[16]=13
20193arr[19]=25Truemax_sum=9Subtract arr[17]=23
21203arr[20]=14Truemax_sum=9Subtract arr[18]=13
22213arr[21]=25Truemax_sum=9Subtract arr[19]=23
23223arr[22]=14Truemax_sum=9Subtract arr[20]=13
24233arr[23]=25Truemax_sum=9Subtract arr[21]=23
25243arr[24]=14Truemax_sum=9Subtract arr[22]=13
26253arr[25]=25Truemax_sum=9Subtract arr[23]=23
27263arr[26]=14Truemax_sum=9Subtract arr[24]=13
28273arr[27]=25Truemax_sum=9Subtract arr[25]=23
29283arr[28]=14Truemax_sum=9Subtract arr[26]=13
30293arr[29]=25Truemax_sum=9Subtract arr[27]=23
31303arr[30]=14Truemax_sum=9Subtract arr[28]=13
32313arr[31]=25Truemax_sum=9Subtract arr[29]=23
33323arr[32]=14Truemax_sum=9Subtract arr[30]=13
34333arr[33]=25Truemax_sum=9Subtract arr[31]=23
35343arr[34]=14Truemax_sum=9Subtract arr[32]=13
36353arr[35]=25Truemax_sum=9Subtract arr[33]=23
37363arr[36]=14Truemax_sum=9Subtract arr[34]=13
38373arr[37]=25Truemax_sum=9Subtract arr[35]=23
39383arr[38]=14Truemax_sum=9Subtract arr[36]=13
40393arr[39]=25Truemax_sum=9Subtract arr[37]=23
41403arr[40]=14Truemax_sum=9Subtract arr[38]=13
42413arr[41]=25Truemax_sum=9Subtract arr[39]=23
43423arr[42]=14Truemax_sum=9Subtract arr[40]=13
44433arr[43]=25Truemax_sum=9Subtract arr[41]=23
45443arr[44]=14Truemax_sum=9Subtract arr[42]=13
46453arr[45]=25Truemax_sum=9Subtract arr[43]=23
47463arr[46]=14Truemax_sum=9Subtract arr[44]=13
48473arr[47]=25Truemax_sum=9Subtract arr[45]=23
49483arr[48]=14Truemax_sum=9Subtract arr[46]=13
50493arr[49]=25Truemax_sum=9Subtract arr[47]=23
51503arr[50]=14Truemax_sum=9Subtract arr[48]=13
52513arr[51]=25Truemax_sum=9Subtract arr[49]=23
53523arr[52]=14Truemax_sum=9Subtract arr[50]=13
54533arr[53]=25Truemax_sum=9Subtract arr[51]=23
55543arr[54]=14Truemax_sum=9Subtract arr[52]=13
56553arr[55]=25Truemax_sum=9Subtract arr[53]=23
57563arr[56]=14Truemax_sum=9Subtract arr[54]=13
58573arr[57]=25Truemax_sum=9Subtract arr[55]=23
59583arr[58]=14Truemax_sum=9Subtract arr[56]=13
60593arr[59]=25Truemax_sum=9Subtract arr[57]=23
61603arr[60]=14Truemax_sum=9Subtract arr[58]=13
62613arr[61]=25Truemax_sum=9Subtract arr[59]=23
63623arr[62]=14Truemax_sum=9Subtract arr[60]=13
64633arr[63]=25Truemax_sum=9Subtract arr[61]=23
65643arr[64]=14Truemax_sum=9Subtract arr[62]=13
66653arr[65]=25Truemax_sum=9Subtract arr[63]=23
67663arr[66]=14Truemax_sum=9Subtract arr[64]=13
68673arr[67]=25Truemax_sum=9Subtract arr[65]=23
69683arr[68]=14Truemax_sum=9Subtract arr[66]=13
70693arr[69]=25Truemax_sum=9Subtract arr[67]=23
71703arr[70]=14Truemax_sum=9Subtract arr[68]=13
72713arr[71]=25Truemax_sum=9Subtract arr[69]=23
73723arr[72]=14Truemax_sum=9Subtract arr[70]=13
74733arr[73]=25Truemax_sum=9Subtract arr[71]=23
75743arr[74]=14Truemax_sum=9Subtract arr[72]=13
76753arr[75]=25Truemax_sum=9Subtract arr[73]=23
77763arr[76]=14Truemax_sum=9Subtract arr[74]=13
78773arr[77]=25Truemax_sum=9Subtract arr[75]=23
79783arr[78]=14Truemax_sum=9Subtract arr[76]=13
80793arr[79]=25Truemax_sum=9Subtract arr[77]=23
81803arr[80]=14Truemax_sum=9Subtract arr[78]=13
82813arr[81]=25Truemax_sum=9Subtract arr[79]=23
83823arr[82]=14Truemax_sum=9Subtract arr[80]=13
84833arr[83]=25Truemax_sum=9Subtract arr[81]=23
85843arr[84]=14Truemax_sum=9Subtract arr[82]=13
86853arr[85]=25Truemax_sum=9Subtract arr[83]=23
87863arr[86]=14Truemax_sum=9Subtract arr[84]=13
88873arr[87]=25Truemax_sum=9Subtract arr[85]=23
89883arr[88]=14Truemax_sum=9Subtract arr[86]=13
90893arr[89]=25Truemax_sum=9Subtract arr[87]=23
91903arr[90]=14Truemax_sum=9Subtract arr[88]=13
92913arr[91]=25Truemax_sum=9Subtract arr[89]=23
93923arr[92]=14Truemax_sum=9Subtract arr[90]=13
94933arr[93]=25Truemax_sum=9Subtract arr[91]=23
95943arr[94]=14Truemax_sum=9Subtract arr[92]=13
96953arr[95]=25Truemax_sum=9Subtract arr[93]=23
97963arr[96]=14Truemax_sum=9Subtract arr[94]=13
98973arr[97]=25Truemax_sum=9Subtract arr[95]=23
99983arr[98]=14Truemax_sum=9Subtract arr[96]=13
100993arr[99]=25Truemax_sum=9Subtract arr[97]=23
Exit-------Reached end of array
💡 Reached end of array, no more elements to slide window
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5Final
iN/A0123499
window_sum0238795
max_sum0008899
Key Moments - 2 Insights
Why do we subtract arr[i-k+1] after updating max_sum?
Because the window slides forward by removing the leftmost element, as shown in execution_table rows 3 and onwards where window_sum subtracts arr[i-k+1].
Why do we only update max_sum when i >= k-1?
Because before i reaches k-1, the window size is smaller than k, so we wait until the window is full to compare sums, as seen in execution_table rows 1 and 2 where condition is False.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what is the window_sum after subtracting arr[i-k+1]?
A2
B8
C6
D0
💡 Hint
Check the 'window_sum after subtract' column at step 3 in execution_table.
At which step does max_sum first update to 9?
AStep 5
BStep 4
CStep 3
DStep 6
💡 Hint
Look at the 'max_sum update' column in execution_table rows 3 to 6.
If k was 2 instead of 3, when would the first max_sum update occur?
AAt i=2
BAt i=1
CAt i=0
DAt i=3
💡 Hint
Recall the condition i >= k-1 controls max_sum update; with k=2, this is i >= 1.
Concept Snapshot
Sliding window algorithm:
- Move a fixed-size window over data
- Add new element to window_sum
- When window full (i >= k-1), update max_sum
- Subtract element leaving window
- Repeat until end
Efficient for continuous subarray problems.
Full Transcript
The sliding window algorithm moves a fixed-size window over an array. It adds the new element to the window sum. When the window reaches the desired size, it updates the maximum sum found so far. Then it subtracts the element that leaves the window as it slides forward. This repeats until the window reaches the end of the array. This method avoids recalculating sums from scratch each time, making it efficient for problems like finding maximum sum subarrays.