脚本宝典收集整理的这篇文章主要介绍了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(); } } }
以上是脚本宝典为你收集整理的Leecode算法题346之 ----数据流中的移动平均值全部内容,希望文章能够帮你解决Leecode算法题346之 ----数据流中的移动平均值所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。