Moving Average of An Input Stream

2024-01-04 12:32
文章标签 input stream moving average

本文主要是介绍Moving Average of An Input Stream,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Moving Average of An Input Stream. The size of a window is n
For example:
input = [1, 1, 2, 3, 3, 4, 4, 4, 5.....], n = 3;
moving average = [1, 1, 1.33, 2, 2.67, 3.33, 3.67, 4, 4.33...]

public void movingAverage(Stream input, int windowSize) 


最下面的做法不是动态的,改为如下,同时也得改之前的另一道题。

public class MovingAverage {Queue<Integer> list;int size = 0;int sum = 0;/** Initialize your data structure here. */public MovingAverage(int size) {list = new LinkedList<>();this.size = size;}public double next(int val) {double result = 0.0;if (list.size() < size) {sum = sum + val;list.offer(val);result = (double)sum / list.size();} else {int deletedNum = list.poll();sum = sum - deletedNum;sum = sum + val;result = (double)sum / size;list.offer(val);}return result;}
}/*** Your MovingAverage object will be instantiated and called as such:* MovingAverage obj = new MovingAverage(size);* double param_1 = obj.next(val);*/


import java.text.DecimalFormat;public class MovingAverage {private static DecimalFormat df2 = new DecimalFormat(".##");public static void main(String[] args) {// TODO Auto-generated method stubint[] array = {1, 1, 2, 3, 3, 4, 4, 4, 5};double[] arrays = movingAverage(array, 3);for (double d: arrays) {
//			System.out.format("%.2f",d);
//			System.out.println("");System.out.println(df2.format(d));}}private static double[] movingAverage(int[] array, int n) {double[] res = new double[array.length];int sum = 0;for (int i = 0; i < array.length; i++) {if (i < n) {sum = sum + array[i];res[i] = (double)sum/(i + 1);} else {sum = sum - array[i - n];sum = sum + array[i];res[i] = (double)sum/n;}}return res;}
}



这篇关于Moving Average of An Input Stream的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569350

相关文章

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

一文带你搞懂Redis Stream的6种消息处理模式

《一文带你搞懂RedisStream的6种消息处理模式》Redis5.0版本引入的Stream数据类型,为Redis生态带来了强大而灵活的消息队列功能,本文将为大家详细介绍RedisStream的6... 目录1. 简单消费模式(Simple Consumption)基本概念核心命令实现示例使用场景优缺点2

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Java之并行流(Parallel Stream)使用详解

《Java之并行流(ParallelStream)使用详解》Java并行流(ParallelStream)通过多线程并行处理集合数据,利用Fork/Join框架加速计算,适用于大规模数据集和计算密集... 目录Java并行流(Parallel Stream)1. 核心概念与原理2. 创建并行流的方式3. 适

Java 8 Stream filter流式过滤器详解

《Java8Streamfilter流式过滤器详解》本文介绍了Java8的StreamAPI中的filter方法,展示了如何使用lambda表达式根据条件过滤流式数据,通过实际代码示例,展示了f... 目录引言 一.Java 8 Stream 的过滤器(filter)二.Java 8 的 filter、fi

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每