Leetcode-子数组最大平均数(滑动窗口)

49 阅读2分钟

滑动窗口

class Solution(object):
    def findMaxAverage(self, nums, k):
        sum = 0
        max_avg = float('-inf')
        n = len(nums)

        start = 0
        for end in range(n):
            sum += nums[end]

            if end - start +1 ==k:
                max_avg = max(max_avg, 1.0 * sum/k)

            if end >= k-1:
                sum -= nums[start]
                start +=1
        return max_avg

测试集

nums = [1, 12, -5, -6, 50, 3] k = 4 
# Create an instance of the Solution class 

solution = Solution() 
# Call the findMaxAverage 
function result = solution.findMaxAverage(nums, k) 

# Print the result 
print(result)

保持滑动窗口K的长度不变,如果为k,则起始点加一 要求平均值,定义sum,考虑负数则定义-inf

动态演示