为了账号安全,请及时绑定邮箱和手机立即绑定

无需任何特殊数据结构即可计算移动平均值

无需任何特殊数据结构即可计算移动平均值

翻过高山走不出你 2021-10-20 14:42:00
我最近接受了一次采访,在那里我遇到了一种情况,我需要计算给定时间段的移动平均线。我想出了以下解决方案,但面试官说他希望我在没有任何特殊数据结构的情况下这样做,因为 DS 会占用一些空间?在没有任何数据结构的情况下,还有其他更好的方法可以做到这一点吗?public class MovingAverage {  private final Queue<BigDecimal> window = new ArrayDeque<>();  private final int period;  private BigDecimal sum = BigDecimal.ZERO;  public MovingAverage(int period) {    this.period = period;  }  public void add(BigDecimal num) {    sum = sum.add(num);    window.add(num);    if (window.size() > period) {      sum = sum.subtract(window.remove());    }  }  public BigDecimal getAverage() {    if (window.isEmpty())      return BigDecimal.ZERO;    BigDecimal divisor = BigDecimal.valueOf(window.size());    return sum.divide(divisor, 2, RoundingMode.HALF_UP);  }}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信