当前位置:网站首页>leetcode-每日一题剑指 Offer II 041. 滑动窗口的平均值(队列模拟)
leetcode-每日一题剑指 Offer II 041. 滑动窗口的平均值(队列模拟)
2022-07-31 05:10:00 【lin钟一】
题目链接:https://leetcode.cn/problems/qIsx9U/
思路
方法一、队列模拟
直接想法
题目要求我们计算滑动窗口里所有数的平均值,给定了窗口大小size,我们在窗口里的数字个数不超过窗口大小时,按照个数计算平均值,一旦超过窗口大小,我们则需要移动窗口,计算当前窗口里的平均值
算法
- 设计MovingAverage结构体存放窗口大小size,当前窗口数总和sum,记录当前窗口的数 num数组
- Constructor 函数用于把窗口大小size记录在MovingAverage结构体里
- Next方法用于计算窗口平均值
1)当前窗口数字个数不超过窗口大小,按照个数计算平均值
2)当前窗口数字个数超过窗口大小,需要移动窗口,计算当前窗口里的平均值
代码示例
type MovingAverage struct {
size int
sum int
num []int
}
/** Initialize your data structure here. */
func Constructor(size int) MovingAverage {
return MovingAverage{
size: size,
}
}
func (m *MovingAverage) Next(val int) float64 {
//超过窗口大小,需要移动窗口
if len(m.num) == m.size{
m.sum -= m.num[0]
m.num = m.num[1:]
}
m.sum += val
m.num = append(m.num, val)
return float64(m.sum) / float64(len(m.num))
}
/** * Your MovingAverage object will be instantiated and called as such: * obj := Constructor(size); * param_1 := obj.Next(val); */
复杂度分析
- 时间复杂度:O(1) 初始化和调用Next方法都只需要O(1)的时间
- 空间复杂度:O(size) 其中size是窗口大小,空间复杂度主要取决于窗口大小,窗口里的数字个数不会超过size
边栏推荐
猜你喜欢
剑指offer专项突击版 --- 第 4 天
[Introduction to MySQL 8 to Mastery] Basics - silent installation of MySQL on Linux system, cross-version upgrade
【JS面试题】面试官:“[1,2,3].map(parseInt)“ 输出结果是什么?答上来就算你通过面试
Proteus 8 Professional安装教程
剑指offer专项突击版 ---- 第2天
【一起学Rust】Rust学习前准备——注释和格式化输出
账号或密码多次输入错误,进行账号封禁
uni-app进阶之创建组件/原生渲染【day9】
[mysql improves query efficiency] Mysql database query is slow to solve the problem
剑指offer基础版 --- 第22天
随机推荐
剑指offer专项突击版 ---- 第2天
闭包(三)----执行环境
uni-app进阶之内嵌应用【day14】
分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ
Redis Advanced - Cache Issues: Consistency, Penetration, Penetration, Avalanche, Pollution, etc.
数据集划分以及交叉验证法
07 【内置指令 自定义指令】
Sword Point Offer Special Assault Edition ---- Day 2
数据库上机实验3 连接查询和分组查询
uni-app进阶之创建组件/原生渲染【day9】
Data set partitioning and cross-validation
<urlopen error [Errno 11001] getaddrinfo failed>的解决、isinstance()函数初略介绍
初涉C语言
pycharm专业版使用
第7章 网络层第1次练习题答案(第三版)
数据库上机实验4 数据更新和视图
Refinement of the four major collection frameworks: Summary of List core knowledge
踏上编程之路,你必须要干的几件事
[MQ I can speak for an hour]
uni-app进阶之样式框架/生产环境【day10】