算法2: 求子数组最大平均数

news/2024/11/14 23:17:11/

一.我的解法,思路在代码注释中

需求:求子数组最大平均数
在这里插入图片描述
代码

public class WzwTest
{public static void main(String[] args){// 输入:[1,12,-5,-6,50,3], k = 4int[] arr = { 1, 12, -5, -6, 50, 3 };int k = 4;double arrayMaxAvg = getArrayMaxAvg(arr, k);// 输出:12.75System.out.println("arrayMaxAvg = " + arrayMaxAvg);}/*** 解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75* @param nums* @param k* @return*/private static double getArrayMaxAvg(int[] nums, int k){// double为了小数不被省略double sum = 0;// 记录大的数double maxSum = 0;// 循环数组,累加需要k数量的总数for (int i = 0; i < nums.length; i++){// 判断是否加完第一组的子数组总数if (i < k){// 总数sum += nums[i];// 如果i+1 = k 说明第一组的子数组总数已经得到if (i + 1 == k){// 因为是第一组,可以直接赋值最大maxSum = sum;}// 终止一下操作,继续上面的循环continue;}// 滑动窗口写法:总数减去第一个数,加上下一个数// 总数+ 数组[5] - 数组[4-4=0]sum = sum + nums[i] - nums[i - k];// 比较两个子数组总数的大小maxSum = Math.max(maxSum, sum);}// 总数/k ==> 51/4return maxSum / k;}
}

二.官方的解法[下面有图解]

在这里插入图片描述
第一组没人比较直接赋值
在这里插入图片描述

第二组和第一组之和比较最大值,结果是第二组51大

在这里插入图片描述

第3组和上组比较最大值51比较,明显结果还是51大

在这里插入图片描述

第4组和上组比较最大值51比较,明显结果还是51大

在这里插入图片描述

第5组和上组比较最大值51比较,明显结果还是51大

在这里插入图片描述

最后求子数组最大平均数

在这里插入图片描述

官方代码

  public double findMaxAverage(int[] nums, int k) {int sum = 0;int n = nums.length;for (int i = 0; i < k; i++) {sum += nums[i];}int maxSum = sum;for (int i = k; i < n; i++) {sum = sum - nums[i - k] + nums[i];maxSum = Math.max(maxSum, sum);}return 1.0 * maxSum / k;}

总结:

  1. 学习了滑动窗口的思想
  2. 对算法了兴趣+1
  3. 对时间算法结构有了丝丝的理解


http://www.ppmy.cn/news/334623.html

相关文章

感谢我强哥感谢骚丹

可能是学校的问题&#xff0c;我在齐齐哈尔大学就读&#xff0c;学习的氛围很差&#xff0c;我可以这么说我的大学&#xff0c;但是别的学校的人不允许。风气问题我的舍友10点起床都是常事&#xff0c;我大一的时候有幸接触到了it极客社&#xff0c;认识了很多好朋友&#xff0…

嗨害嗨害嗨

创建临时目录 [rootlocalhost ~]# mkdir test 创建多个同级目录 [rootlocalhost ~]# touch /test/{passed,group,bashrc,profile,sshd_config} 创建软链接 [rootlocalhost ~]# ln -s /etc/motd /test/motd.soft 创建硬链接 [rootlocalhost ~]# ln /etc/motd /test/motd.hard 查…

火遍全网的杠精哥配音怎么制作?

火遍全网的杠精哥配音怎么制作&#xff1f;搞怪配杠精哥配音制作教程来啦 沙雕动画配音大家都看过吧&#xff1f;盘点这些搞笑视频爆品&#xff0c;这些沙雕的剧情&#xff0c;独特的声音&#xff0c;使观众看完&#xff0c;要么是捧腹大笑&#xff0c;要么是一脸懵逼怀疑人生…

哥离职啦

亲爱的同事们&#xff1a; 亲爱的各位同事&#xff0c;哥要离职啦。由于职业习惯中的“受虐狂”倾向&#xff0c;决定再下江湖&#xff0c;玩玩久违的“碰壁”游戏。当然也不排除另一个理由&#xff1a;遍寻公司&#xff0c;没有找到一个可以暧味的MM&#xff0c;所以另…

【Mysql系列】mysql执行sql脚本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

2019 自我总结

1.引言 今年应该是进入大学以来&#xff0c;最为丰富的一年&#xff0c;也是收获最多的一年。 2.学习 进入2019年&#xff0c;我首先参加的应该是美国大学生数学建模竞赛&#xff0c;比赛前前后后经过了十几天。这一次比赛应该是我经历过最辛苦的一次&#xff0c;首先经过了培…

卢本伟牛逼

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

杀疯了。。。

一直有小伙伴问我推荐 Java 进阶课程&#xff0c;今天给大家推荐一个 Spring Cloud Alibaba 微服务实战课&#xff0c;出自《Java技术栈》号主&#xff0c;和我一样&#xff0c;也都是老程序员了&#xff0c;课程质量没得说&#xff0c;一次订阅&#xff0c;还提供永久免费提供…