长度为n的数组,找出所有长度至少为k的子数组中,平均值最大的,输出这个最大的平均值。
解法:用二分法查找平均值x,对于每个x去检查是否有子数组的平均值大于x。对于一个给定的x,首先将数组的所有元素减去x,然后看是否有子数组的和大于0即可。用数组S记录a[0]...a[i]的累加和,生成S的时候顺便记录前面的最小的S[j],看看S[i]-S[j]是否大于0即可。代码见官方示例。
本文介绍了一种使用二分查找法求解最大平均值子数组的问题,通过将数组元素减去平均值x并检查是否存在子数组和大于0来实现。文章详细解释了算法思路,并提供了实现代码。
长度为n的数组,找出所有长度至少为k的子数组中,平均值最大的,输出这个最大的平均值。
解法:用二分法查找平均值x,对于每个x去检查是否有子数组的平均值大于x。对于一个给定的x,首先将数组的所有元素减去x,然后看是否有子数组的和大于0即可。用数组S记录a[0]...a[i]的累加和,生成S的时候顺便记录前面的最小的S[j],看看S[i]-S[j]是否大于0即可。代码见官方示例。
3083
5914
218
2517

被折叠的 条评论
为什么被折叠?