给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
image.png
解题思路:
- 双指针,滑动窗口;
- 初始化ans=前k个数字的和,j从k开始遍历,滑动窗口,每次加头部一个数字,减去尾部一个数字,再与max_比较;
- 遍历完,max_除以k得最大平均值。
Python3代码:
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
i, j = 0, k
n = len(nums)
max_ = ans = sum(nums[:k])
while j < n:
ans += nums[j]
ans -= nums[j-k]
max_ = max(max_, ans)
j+=1
return max_/k
网友评论