一.读懂题目
二. 分析,推导解法,产生思路。
解题思路:(1)滑动窗口解法
(2)滑动窗口优化:
# 1.初始化将滑动窗口压满,取得第一个滑动窗口的目标值
# 2.继续滑动窗口,每往前滑动一次,需要删除一个和添加一个元素
三 代码实现
class Solution(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
# 滑动窗口解法
i = 0
max_total = float('-inf')
while i+k-1 < len(nums) :
temp_total = sum(nums[i:i+k]) # 这样相加的话,会出现很多重复相加
if temp_total > max_total :
max_total = temp_total
i += 1
return max_total/1.0/k
def findMaxAverage1(self, nums, k):
# 滑动窗口优化:
# 1.初始化将滑动窗口压满,取得第一个滑动窗口的目标值
# 2.继续滑动窗口,每往前滑动一次,需要删除一个和添加一个元素
max_total = sum(nums[:k])/1.0 # 计算初始滑动窗口值
temp_total = max_total
i = 1
while i+k-1 < len(nums):
temp_total = temp_total- nums[i-1]+ nums[i+k-1]
print(i,nums[i-1],nums[i+k-1],temp_total,max_total)
if temp_total > max_total:
max_total = temp_total
i += 1
return max_total / k