方法一:
思路:枚举第1个连续k个元素的和,然后后面都是减去去掉的元素,加上新加入的元素,并使用一个变量进行动态更新,最后返回我们的结果
//注意:数组的最开始k个元素最大的时候这种情况一定要考虑进去func findMaxAverage(nums []int, k int) float64 {//最后的结果sum := 0ret := math.MinInt32 //不可以写0,因为可能是负数,for i := 0; i < len(nums) - k + 1; i++ {if i == 0 {//计算前k个数字的和for i := 0; i < k; i++ {sum += nums[i]}} else {//当前的范围是[i,i+k-1]//需要在之前的基础上左边减去nums[i-1],右边加上nums[i+k-1],然后动态更新最大值sum = sum - nums[i-1] + nums[i+k-1]}//动态更新最大值if ret < sum {ret = sum}}return float64(ret) / float64(k)}
func findMaxAverage(nums []int, k int) float64 {//保存连续k个的和sum := 0//最后的结果ret := 0for i := 0; i < k; i++ {sum += nums[i]}ret = sumfor i := 1; i < len(nums) - k + 1; i++ {//当前的范围是[i,i+k-1]//需要在之前的基础上左边减去nums[i-1],右边加上nums[i+k-1],然后动态更新最大值sum = sum - nums[i-1] + nums[i+k-1]//动态更新最大值if ret < sum {ret = sum}}return float64(ret) / float64(k)}
