Redian新闻
>
请问在店里买estee lauder 有什么优惠?
avatar
s*m
2
两个inerface
void inject(int value)
double getAverage() //返回过去5分钟内的平均值
先不考虑并发,
用个Queue或者Dqueue保存数据。另开个线程一定时间删除数据
谁负责计算平均值呢? 考虑getAverage会被经常call.
inject吧。getAverage会快一点。
(getAverage和最后一次inject的时间不一样,计算出来的还就不是过去5分钟的了吧
。。。擦,刚开始还注意到了,被challenge了一下,把这个点给忘了)
计算平均的时候有办法避免每次遍历这个Queue吗?
考虑并发是,上面的方法还行得通吗?
avatar
l*2
3
RT
avatar
t*s
4
rt
在macy's里买的话能有什么优惠?
avatar
y*r
5
和大妈一起抢 itouch 4?
avatar
c*e
6
为了避免每次计算平均数时遍历整个queue:
1. 保存当前5分钟所有数据的总和,或者总平均值
2. 每次新来一个数时,加到总和里,或者加到总平均值里
3. 每过去1秒(或者考官要求的时间精度),找到那些超过5分钟的数字,从总和里减掉
3号逻辑,做成一个独立的方法,然后在getAverage方法以及inject方法里都调用1次,
这样既保证getAverage是准确的,也保证如果一直没有人调用getAveragae,也不会塞
太多过时数据在队列里
还有啊,如果时间精度要求不高,比如1秒,而inject频率很高,比如每秒钟1000次,
那么根本就不用保存每一个数以及其时间戳,可以把1秒钟内的数字,全部累加,保存
成1个数,1个时间戳
因为只要输出平均值,本来就没有必要保存每个数,只要有单位时间内总数值保存好就
行了
avatar
b*y
7
日,又来了!
avatar
b*6
8
touch给50块的卡,怎么样?
avatar
s*r
9
是个什么东西啊?
黑糊糊的。
avatar
L*y
10
黑夜里乌鸦在飞?

是个什么东西啊?
黑糊糊的。

【在 s**r 的大作中提到】
: 是个什么东西啊?
: 黑糊糊的。

avatar
m*o
11
丽娟儿
avatar
C*i
12
你要再发一次!
我也没啥脾气
avatar
b*n
13
一片黑,啥玩意啊?

【在 l******2 的大作中提到】
: RT
avatar
f*u
14
上次是黑暗中看光明这次是黑暗中看黑洞.

【在 l******2 的大作中提到】
: RT
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。