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

滑动窗口元素的平均值 ← STL : deque

【题目描述】
给定一个序列,使用 deque 维护一个大小为 k 的窗口,计算每个窗口中所有元素的平均值。


【算法分析】
● STL deque:
https://cplusplus.com/reference/deque/
● 在 C++ 标准模板库(STL)中,dequedouble-ended queue,双端队列)是一个非常重要的容器,它支持在序列的两端进行快速插入和删除操作。所以,对于需要在两端进行修改的数据结构,例如滑动窗口,deque是一个理想的选择。
● 本例使用 STL deque 的
push_back() 函数创建 deque:https://cplusplus.com/reference/deque/deque/push_back/

【算法代码】

#include <bits/stdc++.h>
using namespace std;

void sliding_window_avg(deque<int> deq, int k) {
    double sum=0;
    for(int i=0; i<deq.size(); i++) {
        sum+=deq[i];
        if(i>=k) sum-=deq[i-k];
        if(i>=k-1) {
            cout<<"Average of "<<k<<" elements: "<<sum/k<<endl;
        }
    }
}

int main() {
    deque<int> deq;
    int n,x,k;

    cin>>n;
    while(n--) {
        cin>>x;
        deq.push_back(x);
    }

    cin>>k;
    sliding_window_avg(deq,k);

    return 0;
}

/*
in:
9
2 8 1 6 3 5 7 4 9
5

out:
Average of 5 elements: 4
Average of 5 elements: 4.6
Average of 5 elements: 4.4
Average of 5 elements: 5
Average of 5 elements: 5.6
*/



【参考文献】
https://cplusplus.com/reference/deque/deque/push_back/
https://mp.weixin.qq.com/s/hNb_V3ffphCr_8Z30NPryQ



 


http://www.kler.cn/a/285123.html

相关文章:

  • 问:MySQL主从同步的机制梳理?
  • 异步提交Django
  • 【缓存策略】你知道 Cache Aside(缓存旁路)这个缓存策略吗
  • 股市下跌时,期权市场的应对策略有哪些?
  • OSG开发笔记(三十一):OSG中LOD层次细节模型介绍和使用
  • 【Leecode】Leecode刷题之路第46天之全排列
  • GD32F4xx---RTC初始化设置及闹钟方式实现秒中断讲解
  • 数据结构概念
  • 代码随想录算法训练营第 56 天 |108冗余连接 109冗余连接 II
  • 地平线—征程2(Journey 2-J2)芯片详解(28)—MIPI RX/TX+SD/SDIO/eMMC Interface Timings
  • Python Excel 操作全面总结
  • 计算物理精解【3】
  • 10分钟了解OPPO中间件容器化实践
  • ue Rotate to face BB entry转向不对
  • springboot+redis+mybatis体会布隆过滤器
  • VMware中安装 Ubuntu ,实现 Windows 和 Ubuntu 之间自由复制粘贴
  • 7个流行的开源数据治理工具
  • 51单片机.之ADC数字模拟转换
  • 如何使用vcftools提取特定的染色体
  • vim 修改文件
  • 常见协议工作原理 https ARP ICMP DHCP PING
  • 华为手机数据丢失如何恢复?
  • 具身智能(Embodied Intelligence)概述
  • 【Redis】哨兵(Sentinel)
  • 1098 Insertion or Heap Sort
  • 在Docker中使用环境变量改变SpringBoot程序配置