--- title: '643. Maximum Average Subarray I' description: You are given an integer array nums consisting of n elements, and an integer k icon: dot topics: - { name: "Array", slug: "array" } - { name: "Sliding Window", slug: "sliding-window" } issue: "https://github.com/prdlk/leetcode/issues/55" companies: - { name: "Bloomberg", period: "Thirty Days", frequency: 83.1 } - { name: "Microsoft", period: "Thirty Days", frequency: 67.9 } - { name: "Amazon", period: "Thirty Days", frequency: 55.9 } - { name: "Google", period: "Thirty Days", frequency: 36.7 } - { name: "tcs", period: "Three Months", frequency: 57.2 } - { name: "Meta", period: "Six Months", frequency: 32.7 } sidebar: label: 'Maximum Average Subarray I' badge: 'Easy' --- ### Example 1: - Input: `nums = [1,12,-5,-6,50,3], k = 4` - Output: `12.75000` - Explanation: Maximum average is `(12 - 5 - 6 + 50`) / `4 = 51 / 4 = 12.75` ### Example 2: - Input: `nums = [5], k = 1` - Output: `5.00000` ### Constraints: - `n == nums.length` - `1 <= k <= n <= 10^5` - `-10^4 <= nums[i] <= 10^4` ## Solution ```py class Solution: def findMaxAverage(self, nums: list[int], k: int) -> float: window_sum = 0 for i in range(k): window_sum += nums[i] largest = window_sum for right in range(k, len(nums)): left = right - k window_sum -= nums[left] window_sum += nums[right] largest = max(largest, window_sum) return largest / k ```