我有一个用于注册req的api,每个req都是在一个有数量的商店里出售。 ex。
销售:{时间戳:23212312312
金额:£500}追踪req数量的算法
然后,我有一个函数统计负责给我在最后60秒内完成的销售细节。 统计将返回: 平均:平均都在最后60秒 分钟完成的销售金额的:分在最后60秒完成 最大的销售金额:最高金额
总和:所有的销售金额的总和在过去60秒内
计数:在过去60年代完成的销售数量
此功能在空间和时间上应该为O(1)。现在,如果我们忽略空间请求,是否应该使用链表来存储最近60秒内发生的销售并不断更新?或者当统计函数被调用时应该更新它。这怎么可能在O(1)空间中完成?
我的解决方案: 这是我解决这个问题的方法: 每次我们卖东西的时候,都会将该项添加到链表中。 由于java链表具有指向第一个和最后一个元素的指针,因此第一个元素将指向从现在开始60秒发生的第一个销售。当我们做销售时,我们从列表的开头删除元素,直到我们在60秒内完成。当我们调用统计信息时,我们将采用当前时间 - 60秒来查找时间戳,并使用它从列表的开头删除元素。但是当计算最小,最大平均值和总和时,我需要在空间和时间中遍历list => O(n)。
Min max avg是最近60秒内发生的销售金额 – user2975699
如果不是o(1)应该如何解决这个问题?我们可以得到o(1)的时间吗?如果统计数据func必须循环遍历所有60年代的销售额来计算最小最大平均值并且总和为O(N) – user2975699
相关/可能的重复:https://stackoverflow.com/questions/556155 – augurar