维护一个长度为 k 的数组,扫描一遍,贪心取平均值,然后超时了......
class Solution(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
if len(nums) == k:
return sum(nums) / float(k)
answer = float('-inf')
array = []
for num in nums:
if len(array) < k:
array.append(num)
else:
answer = max(sum(array)/float(len(array)), answer)
array.pop(0)
array.append(num)
answer = max(sum(array)/float(len(array)), answer)
return answer
又超时!!!
class Solution(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
if len(nums) == k:
return sum(nums) / float(k)
s = 0
for i in range(0, len(nums) - k + 1):
s = max(sum(nums[i: i+k]), s)
return s / float(k)
k 大了就会超时......
去掉 sum 之后,终于 ok 了!!!
class Solution(object):
def findMaxAverage(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: float
"""
if len(nums) == k:
return sum(nums) / float(k)
s = float('-inf')
t = sum(nums[:k])
for i in range(0, len(nums) - k):
s = max(s, t)
t += nums[i+k] - nums[i]
s = max(s, t)
return s / float(k)
思路嘛,就是长度固定时,遍历一遍是先从 第 k + 1 个数( 下标为k ) 开始算。