leetcode:643. 子数组最大平均数 I(滑动窗口)

一、题目

链接:643. 子数组最大平均数 I - 力扣(LeetCode)

 

函数原型:

double findMaxAverage(int* nums, int numsSize, int k)

二、思路 

滑动窗口:

先计算数组前k个元素总和,作为第一个窗口,默认第一个窗口元素总和为最大总和。随后从第k+1个元素开始遍历数组,相当于窗口向右滑动,计算当前窗口元素总和:上一个窗口元素总和,减去上一个窗口第一个元素,加上当前窗口最后一个元素(即正在遍历的元素)。比较当前窗口与最大窗口总和,选取最大的窗口总和。最后返回最大窗口总和/k,即最大平均值。

小技巧:double类型值计算比较慢,所以计算过程中间值用int型,最后将结果强制类型转换为double类型即可。

三、代码

double findMaxAverage(int* nums, int numsSize, int k) {
    int sum=0;//当前窗口元素总和
	int maxsum = 0;//选取最大的和

	//计算前k个数据总和
	for (int i = 0; i < k; i++)
	{
		sum += nums[i];
	}
	maxsum = sum;//初始时默认以第一个窗口元素总和为最大

	//滑动窗口
	for (int i = k; i < numsSize; i++)
	{
		sum = sum + nums[i] - nums[i - k];//减去原窗口第一个元素,加上新窗口最后一个元素
		maxsum = fmax(maxsum, sum);
	}
	return (double)maxsum / k;
}

相关推荐

  1. Leetcode 643. 数组平均数 I

    2023-12-10 02:42:02       17 阅读
  2. 力扣-643. 数组平均数 I

    2023-12-10 02:42:02       7 阅读
  3. 643.数组平均数

    2023-12-10 02:42:02       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 02:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 02:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 02:42:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 02:42:02       20 阅读

热门阅读

  1. Node CLI 之 Commander.js (1)

    2023-12-10 02:42:02       40 阅读
  2. C# --线程的进化史

    2023-12-10 02:42:02       35 阅读
  3. 偶数位字符前置算法

    2023-12-10 02:42:02       41 阅读
  4. MongoDb数据库

    2023-12-10 02:42:02       48 阅读
  5. MySQL - 存储过程与事务

    2023-12-10 02:42:02       44 阅读
  6. vue获取主机id和IP地址

    2023-12-10 02:42:02       34 阅读
  7. Kotlin 中密封类、枚举类与密封接口的对比分析

    2023-12-10 02:42:02       38 阅读
  8. 昇腾npu上构建modelbox webUI开发容器教程

    2023-12-10 02:42:02       46 阅读