| 1 | class 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 |
nothing calls this directly
no outgoing calls
no test coverage detected