Leecode算法题346之 ----数据流中的移动平均值

发布时间:2022-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Leecode算法题346之 ----数据流中的移动平均值脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

题目要求:

Leecode算法题346之 ----数据流中的移动平均值

个人思路:

实现的数据结构打算用队列,因为数据流也是一种先进先出的数据结构。最开始考虑的是判断窗口和队列的大小。1)如果滑动窗口小于队列的大小,就只用计算队列的元素之和除以元素的个数即可;

2)如果滑动窗口大于队列的大小,就需要弹出之前的队首的元素然后再计算。

但是关键点在于如何计算队列中的所有元素之和,如果题目最开始是空的队列,就简单了很多,只用在每一个元素进入队列的时候就将这个元素加入sum之中,但如果这个队列最开始并不是为空,在计算的时候就需要将所有的元素出队才能够计算出这个的和,相比起来要复杂的多。

import java.util.LinkedList;
import java.util.Queue;

public class Queue@R_304_2187@ {

  PRivate Queue<Integer> queue;


  private int size ;//滑动窗口的size

    int sum = 0;

    public static void main(String[] args) {

        Queuetest queuetest = new Queuetest(3);
        System.out.println(queuetest.next(1));
        System.out.println(queuetest.next(3));
        System.out.println(queuetest.next(2));
        System.out.println(queuetest.next(4));
        System.out.println(queuetest.next(6));
        System.out.println(queuetest.next(2));
    }


  public Queuetest(int size){
        this.size = size;
        queue = new LinkedList<Integer>();
    }

    public double next(int val){
        if(size == queue.size()) {
            Integer poll = queue.poll();
            sum -= poll;
            queue.add(val);
            return (sum+=val)/size;
        }
        else
        {
            queue.add(val);
            return (sum+=val)/queue.size();
        }

    }


}

&nbsp;

脚本宝典总结

以上是脚本宝典为你收集整理的Leecode算法题346之 ----数据流中的移动平均值全部内容,希望文章能够帮你解决Leecode算法题346之 ----数据流中的移动平均值所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。