Skip to content

Commit 475a32c

Browse files
committed
Movable sliding window
1 parent f09cbf3 commit 475a32c

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import math
2+
def smallest_Subarray_with_Sum(arr,S):
3+
# Taking Start of sliding window and initial window sum with min_length
4+
window_sum = 0
5+
window_start = 0
6+
min_length = math.inf
7+
8+
for window_end in range(0,len(arr)): # taking window end and creating slidin window
9+
window_sum += arr[window_end] # adding eliment of sliding window
10+
11+
while window_sum >= S: #Checking for Sum
12+
min_length = min(min_length, window_end - window_start + 1) # Keeping track of minimun sliding window length
13+
window_sum -= arr[window_start] # shrinking sliding window from start
14+
window_start += 1 # incrementing sliding window by one
15+
if min_length == math.inf:
16+
return 0
17+
return min_length
18+
19+
# Time complexity O(N + N) = O(N) Outer for loop running for all element and inner while loop running for each element only once.
20+
# Space complexity o(1)
21+
22+
def main():
23+
print("Smallest Subarray length:" + str(smallest_Subarray_with_Sum([3, 4, 1, 1, 6],8)))
24+
print("Smallest Subarray length:" + str(smallest_Subarray_with_Sum([2, 1, 5, 2, 3, 2],7)))
25+
print("Smallest Subarray length:" + str(smallest_Subarray_with_Sum([2, 1, 5, 2, 8],7)))
26+
main()

0 commit comments

Comments
 (0)