​LeetCode刷题实战346:数据流中的移动平均值

346. 数据流中的移动平均值 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 详细题目可查看leetcodehttps://leetcode-cn.com/problems/moving-average-from-data-stream/ 解题思路 题目表述的不是很清晰,最后输出的结果是滑动窗口内部的数字的平均数。具体做法是使用一个队列,当队列长度小于滑动窗口值时,计算队列内的平均数即可。当队列长度大于滑动窗口值时,弹出适合数量的队首元素(滑动窗口取的是队列尾部的元素),然后计算均值即可。 阅读详情

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 数据流中的移动平均值,我们先来看题面:

https://leetcode-cn.com/problems/reverse-vowels-of-a-string/

Given a stream of integers and a window size, calculate the moving average of all integers in the sliding window.

给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。

示例

MovingAverage m = new MovingAverage(3);
m.next(1) = 1
m.next(10) = (1 + 10) / 2
m.next(3) = (1 + 10 + 3) / 3
m.next(5) = (10 + 3 + 5) / 3

思路:一个队列记录数字,用一个变量记录窗口和即可,每次更新窗口和。

解题

内部实现使用一个队列来做,判断当前队列大小和限定大小,将总和加减,之后算平均数

public class MovingAverage {
    private double previousSum = 0.0;
    private int maxSize;
    private Queue<Integer> currentWindow;
    /** Initialize your data structure here. */
    public MovingAverage(int size) {
        currentWindow = new LinkedList<Integer>();
        maxSize = size;
    }
     
    public double next(int val) {
        if(currentWindow.size()==maxSize){
            previousSum -= currentWindow.remove();
        }
        currentWindow.add(val);
        previousSum += val;
        return previousSum/currentWindow.size();
    }
}

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-340题汇总,希望对你有点帮助!

LeetCode刷题实战341:扁平化嵌套列表迭代器

LeetCode刷题实战342:4的幂

LeetCode刷题实战343:整数拆分

LeetCode刷题实战344:反转字符串

LeetCode刷题实战345:反转字符串中的元音字母

力扣 346. 数据流中的移动平均值 C++(利用queue维护滑动窗口) 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3 C++ class MovingAverage { public: /** Initialize your data structu 阅读详情

相关推荐

Swift 实战:用队列巧解 LeetCode 346 数据流中的移动平均数

在数据流处理中,实时计算“滑动窗口内的平均数”是一个非常常见的需求。不论是金融领域的股票价格走势,还是物联网设备的实时数据监控,移动平均(Moving Average) 都是核心操作。

记录从移动端、鸿蒙到物联网与AI的完整实战与思考。专注于分享可复用的工程方案与产品思维,尤其深入鸿蒙生态与全栈开发。以十年工程与管理沉淀,为你提供清晰的技术纵深路径。坚信技术的价值在于“贯通”与“落地”。 957

【LeetCode346】数据流中的移动平均值

一、题目 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3 二、思路 就是一个滑动窗口的题目,即每次的next(val)操作都会在原来的基础上加入元素,并且将当前滑动窗口内的元素之和除以窗口

发现问题,并解决问题,批判性思维 1382

稳定性性能系列之十五——系统稳定性监控体系建设:从指标到预警的完整方案

深入探讨Android系统稳定性监控体系的设计与实现,涵盖指标体系设计、数据采集方案、异常检测算法、预警响应机制,并提供完整的监控平台搭建实践。

Cheson的专栏 1358

leetcode:346. 数据流中的移动平均值

给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。

OceanStar的博客 570

FRM(Financial Risk Manager,金融风险管理师)知识点总结归纳

FRM知识点总结(150字) FRM考试分为两级:一级侧重基础理论和工具,包含风险管理基础、定量分析、金融市场产品、估值与风险建模四大模块,涵盖风险管理框架、统计学方法、衍生品定价及VaR计算等核心内容。二级聚焦实际应用,分为市场风险、信用风险、操作风险、流动性风险、投资管理和市场前沿六大模块,深入探讨高级风险度量技术(如极值理论)、信用风险模型、巴塞尔协议及新兴风险议题。考试体系贯穿"风险识别→度量→管理→监管"逻辑主线,强调定量分析与实务案例的结合,覆盖传统金融风险和区块链、ESG等

极客神殿 1441

Mac安装Weblogic教程

1.Weblogic的下载 这次安装的是最新版本12 官网下载地址: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 下载需要登录账号,如没有账号要注册一个 下载后的文件如下图,其中fmw_12.2.1.3.0_wls_quick.jar文件就是安装包了,注意现在不要对它进行解压 2.安装前的确...

weixin_40102675的博客 5063

给定一个数组和滑动窗口的大小,找出每一个滑动窗口里数值的最大值

通过比较每一个窗口的元素 import java.util.*; public class Solution { public ArrayList<Integer> maxInWindows(int [] num, int size){ ArrayList<Integer> result = new ArrayList<Integer>(); //边界检查 if(num.length<=0 || size &l

weixin_42643321的博客 492

Win11系统下Notepad++右键菜单失效?3种修复方法实测有效(附注册表备份指南)

本文针对Windows 11系统中Notepad++右键菜单失效的常见问题,提供了三种经过实测有效的修复方法。核心解决方案包括使用官方NppShell.dll重新注册、手动修复注册表项以及系统级问题排查,并详细说明了操作前的注册表备份指南,确保修复过程安全可靠。

m2n3b4v5c6的博客 328

Leetcode 剑指 Offer II 041. 滑动窗口的平均值

题目难度: 中等今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号里回复剑指offer2就能看到该系列当前连载的所有文章了, 记得关注哦~

随便发挥的博客 267

从零开始:用ADS 2023手把手教你设计2.4GHz Wi-Fi LNA(基于ATF-54143,附模型文件)

本文详细介绍了如何使用ADS 2023软件设计2.4GHz Wi-Fi频段的低噪声放大器(LNA),基于ATF-54143晶体管。内容涵盖模型导入、直流工作点确定、稳定性优化、噪声匹配等关键步骤,并提供可下载的模型文件包,帮助工程师快速掌握LNA设计技巧。

weixin_42531128的博客 320

【绝对要收藏-优秀论文范文】高项-度量绩效域

摘要:本文基于某水库数字孪生平台建设项目(2022.9-2023.5,645.97万元)的管理实践,从信息系统度量绩效域角度展开论述。项目构建了包含防洪调度等6大子系统的数字平台,实现洪水"四预"功能。重点分析了度量绩效域的五大要点:制定有效指标(如成本±8%偏差阈值)、多维数据采集、预警临界值设定、基于趋势的主动干预和持续改进机制。特别阐述了绩效问题的诊断方法,包括设备采购全周期成本分析、阶段性成本报告制度等。项目状态展示采用三维可视化看板,集成进度、成本、质量等多维度实时数据,最终实

xylllamm的博客 345

LeetCode第346题_数据流中的移动平均值

LeetCode 346题解:数据流中的移动平均值 这道题要求实现一个计算数据流移动平均值的类,使用滑动窗口技术。解题关键在于高效维护窗口内的元素和。文章提供了两种解法:队列和循环数组,分析其时间复杂度均为O(1),空间复杂度O(size)。队列实现更直观,循环数组空间利用率更高。代码示例包含C#、Python、C++三种语言实现,其中C++性能最优。边界条件处理需注意整数除法精度问题。相关题目推荐了滑动窗口最大值等类似问题。适合算法初学者掌握基本数据流处理技巧。

qq_40263592的博客 1021

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

实战二:基于LightGBM进行海洋轨迹预测 代码+数据(非常详细可作为毕设)

1315

【简单】力扣算法题解析LeetCode346:数据流中的移动平均值

LeetCode 346题,要求设计一个实时计算数据流移动平均值的类MovingAverage。核心方案采用队列维护滑动窗口,通过动态维护总和实现O(1)时间复杂度。初始化时设定窗口大小,每次添加新值自动调整队列:若满则移除最早元素并更新总和,新值入队后重新计算平均值。Java实现使用LinkedList队列,确保高效操作(插入/删除O(1))和精确计算(double类型总和)。

ylumwd的博客 1107

微信小程序视频内容服务类目审核不过?绕过审核的两种思路!

虽然不推荐绕过官方审核,但在实际项目中,总有一些特殊情况:比如,最近开发的小程序涉及视频播放,提交审核时,被官方要求补充“教育服务 - 在线视频课程”类目。但我们的内容只是车辆使用介绍,并非教育课程,无法提供相应资质。该怎么办?很多开发者发现,小程序开发不是最难的,审核才是最难的。 微信为了规避法律风险,要求某些功能必须提供资质。例如:然而,并不是所有公司都能轻松申请到这些资质,甚至有些资质根本不适用于我们的业务,导致审核卡住,无法上线。就像我遇到的这个问题,官方要求我们补充“在线视频课程”类目,但实际业务

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3246

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode346. 数据流中的移动平均值

给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3 思路:一个队列记录数字,...

少说,多做。 4810

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

leetcode 算法题346 (简单086) 数据流中的移动平均值

leetcode 算法题346 (简单086) 数据流中的移动平均值 题目介绍 会员试题 先写非会员的 等写完了 开个会员统一写会员题目....

FYuu95100的博客 1292

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode 346. 数据流中的移动平均值(队列)

文章目录1. 题目2. 解题 1. 题目 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/probl

Michael是个半路程序员 2208

⭐算法入门⭐《队列》简单02 —— LeetCode 346. 数据流中的移动平均值

《队列》简单02 —— LeetCode 346. 数据流中的移动平均值

英雄哪里出来 4783

LeetCode-Python-346. 数据流中的移动平均值

给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3 思路: 数据流特点是...

Keep Coding 3116

LeetCode 346. 数据流中的移动平均值

/ 返回 4.66667 = (1 + 10 + 3) / 3。// 返回 6.0 = (10 + 3 + 5) / 3。// 返回 5.5 = (1 + 10) / 2。给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。// 返回 1.0 = 1 / 1。

m0_56090828的博客 452

LeetCode-Algorithms-[Easy]346. 数据流中的移动平均值

346. 数据流中的移动平均值 这个题让我颇有兴致地自己又写了一遍循环队列的实现 public class MovingAverage { /** Initialize your data structure here. */ private IntCircularQueue q; public MovingAverage(int size) { q = new I...

AlphaCat的博客 460

leetcode 346题数据流中的移动平均值 java解决

题目 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 + 10) / 2 m.next(3) = (1 + 10 + 3) / 3 m.next(5) = (10 + 3 + 5) / 3 来源:力扣(LeetCo...

qq_45789385的博客 538

leetcode 346. 数据流中的移动平均值

队列,若是队列的大小 > size,那么就需要pop,而且除数是队列的大小和size的最小值

邹九的个人博客 562

LeetCode-346. 数据流中的移动平均值(Java实现)

文章参考自“暴躁老哥”的python实现 https://blog.youkuaiyun.com/qq_32424059/article/details/90413760 给定一个整数数据流和一个窗口大小,根据该滑动窗口的大小,计算其所有整数的移动平均值。 示例: MovingAverage m = new MovingAverage(3); m.next(1) = 1 m.next(10) = (1 +...

weixin_43712751的博客 1440

【C++刷题】力扣-#346-数据流中的移动平均值

给定一个整数数据流和一个窗口大小 k,你需要设计一个数据结构,它支持以下两种操作: 1. addNum(int num) - 从数据流中添加一个数字到数据结构中。 2. getAverage() - 返回数据结构中所有数字的平均值。

会写代码的饭桶 784
上一篇: Spring Batch 数据批处理框架,真心强啊!!
下一篇: 【送书福利】以1敌10不是梦,Spring Boot企业级真实应用案例
编程IT圈
博客等级 码龄6年 1130粉丝 544原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程IT圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值