MCPcopy Create free account
hub / github.com/ashishps1/awesome-leetcode-resources / SlidingWindow

Class SlidingWindow

patterns/python/sliding_window.py:1–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1class SlidingWindow:
2 def find_max_average_brute_force(self, nums, k):
3 max_avg = float('-inf')
4
5 for i in range(len(nums) - k + 1):
6 max_avg = max(max_avg, sum(nums[i:i + k]) / k)
7
8 return max_avg
9
10 def find_max_average_sliding_window(self, nums, k):
11 sum_window = sum(nums[:k])
12 max_sum = sum_window
13
14 for i in range(k, len(nums)):
15 sum_window += nums[i] - nums[i - k]
16 max_sum = max(max_sum, sum_window)
17
18 return max_sum / k
19
20 def length_of_longest_substring_sliding_window(self, s):
21 seen = set()
22 max_length = left = 0
23
24 for right in range(len(s)):
25 while s[right] in seen:
26 seen.remove(s[left])
27 left += 1
28 seen.add(s[right])
29 max_length = max(max_length, right - left + 1)
30
31 return max_length
32
33 def length_of_longest_substring_sliding_window_frequency_array(self, s):
34 freq = [0] * 128
35 max_length = left = 0
36
37 for right in range(len(s)):
38 freq[ord(s[right])] += 1
39
40 while freq[ord(s[right])] > 1:
41 freq[ord(s[left])] -= 1
42 left += 1
43
44 max_length = max(max_length, right - left + 1)
45
46 return max_length

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected