python 数组平均数_yiduobo的每日leetcode 643.子数组最大平均数I

python 数组平均数_yiduobo的每日leetcode 643.子数组最大平均数I_第1张图片

祖传的手艺不想丢了,所以按顺序写一个leetcode的题解。计划每日两题,争取不卡题吧。

643.子数组最大平均数I

力扣​leetcode-cn.com

注意到题目要找到是长度为k的连续子数组,因此可以用滑动窗口来处理。

维护一个长度为k的滑动窗口,逐步往右滑动。每次将nums[index]加入到滑动窗口中,同时将nums[index - k]从中移除,那么此时滑动窗口中数字之和就要加上nums[index]然后减去nums[index - k]。记录滑动过程中窗口最大的和,然后除以k就是最终答案。

最后附上python代码:

class Solution(object):
    def findMaxAverage(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: float
        """

        now = 0
        for index in range(k):
            now += nums[index]
        
        res = now
        for index in range(k, len(nums)):
            now += nums[index] - nums[index - k]
            res = max(now, res)

        return res * 1.0 / k

你可能感兴趣的:(python,数组平均数)