当前位置: 首页 > news >正文

子数组最大平均数 I

给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。

请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。

任何误差小于 10-5 的答案都将被视为正确答案。

示例 1:

输入:nums = [1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75

示例 2:

输入:nums = [5], k = 1
输出:5.00000

提示:

  • n == nums.length
  • 1 <= k <= n <= 105
  • -104 <= nums[i] <= 104

题目解析:

固定长度子数组计算平均值,取最大平均值返回。

解法思路:

暴力解法:计算每个长度为k的子数组的平均数,取最大返回,时间复杂度O(nk)。

固定长度子数组,可以利用定长滑动窗口解法将时间复杂度降到最O(n)。

1.入窗口

2.判断

3.出窗口

4.更新结果

更新结果的代码放在窗口大小达到 k 之后

代码:
class Solution {
public:double findMaxAverage(vector<int>& nums, int k) {int left=0,right=0;double sum=0,ave=INT_MIN;for(;right<nums.size();right++){//入窗口sum+=nums[right];if(right-left+1<k)continue;//判断 + 出窗口if(right-left+1 > k)sum-=nums[left++]; //更新结果ave=max(sum/k,ave); }return ave;}
};

本题细节:

maxAve初始化为INT_MIN,确保可以正确处理所有负数的情况。

http://www.dtcms.com/a/276163.html

相关文章:

  • Dataset类代码实战
  • 【LeetCode 热题 100】25. K 个一组翻转链表——迭代+哨兵
  • Spring AOP 是如何生效的(入口源码级解析)?
  • SpringBootloggers未授权访问漏洞处理
  • Flink创建执行环境的三种方式,也是Flink搭建程序的第一步
  • [特殊字符] 实时数据洪流突围战:Flink+Paimon实现毫秒级分析的架构革命(附压测报告)——日均百亿级数据处理成本降低60%的工业级方案
  • Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
  • WebSocket:构建实时交互的 Web 应用
  • C# VB.NET多进程-管道通信,命名管道(Named Pipes)
  • C语言结构体
  • C++---<cctype>
  • 2025科大讯飞AI大赛<大模型技术方向>(Datawhale AI 夏令营)
  • 解决bash终端的路径名称乱码问题
  • Redis渗透思路总结
  • Theo Mandel的用户界面设计三大黄金规则
  • 新手向:使用Python自动化清理指定目录中的临时文件
  • 脉冲神经网络膜电位泄漏系数学习:开启时空动态特征提取的新篇章
  • 实验一 接苹果
  • 配置驱动开发:初探零代码构建嵌入式软件配置工具
  • Windows 用户账户控制(UAC)绕过漏洞
  • 时序分解 | Matlab基于GWO-FMD基于灰狼算法优化特征模态分解-2025-7-12
  • 实现Service和UI通信,并且能够手动回收的解决方案——共享ViewModel
  • 卫星通信终端天线的5种对星模式之二:DVB跟踪
  • C++类模板继承部分知识及测试代码
  • Final
  • 剑指offer——树:二叉树的深度
  • 【C++小白逆袭】内存管理从崩溃到精通的秘籍
  • JVM 中“对象存活判定方法”全面解析
  • JVM的垃圾回收算法和多种GC算法
  • Git 相关的常见面试题及参考答案