mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 21:22:43 +00:00
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
"""
|
|
643. Maximum Average Subarray I
|
|
Difficulty: Easy
|
|
https://leetcode.com/problems/maximum-average-subarray-i/
|
|
|
|
──────────────────────────────────────────────────
|
|
|
|
You are given an integer array nums consisting of n elements, and an
|
|
integer k.
|
|
|
|
Find a contiguous subarray whose length is equal to k that has the
|
|
maximum average value and return this value. Any answer with a
|
|
calculation error less than 10^-5 will be accepted.
|
|
|
|
|
|
|
|
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
|
|
"""
|
|
|
|
|
|
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
|