leetcode_643. 子数组最大平均数 I
【摘要】 目录
一、题目内容
二、解题思路
三、代码
一、题目内容
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
示例:
输入:[1,12,-5,-6,50,3], k = 4 输出:12.75 解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
提示:
1 <...
目录
一、题目内容
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
示例:
输入:[1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
提示:
1 <= k <= n <= 30,000。
所给数据范围 [-10,000,10,000]。
二、解题思路
先求出前k个数的和,然后每次减去最左边的数并加上最右边的数,得到新的和,该和与之前的和进行比较,取大者,直到遍历结束。
三、代码
-
class Solution:
-
def findMaxAverage(self, nums: list, k: int) -> float:
-
max_avg = 0
-
for i in range(k):
-
max_avg += nums[i]
-
tmp_max_avg = max_avg
-
for i in range(k, len(nums)):
-
tmp_max_avg += nums[i] - nums[i - k]
-
max_avg = max(tmp_max_avg, max_avg)
-
return max_avg / k
-
-
-
if __name__ == '__main__':
-
s = Solution()
-
nums = [1, 12, -5, -6, 50, 3]
-
k = 4
-
ans = s.findMaxAverage(nums, k)
-
print(ans)
文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。
原文链接:nickhuang1996.blog.csdn.net/article/details/113625030
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)