由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个题目
相关主题
问个static STL container的问题G的电面题,是什么意思啊?
问个题目关于 max overlap interval 的一题
把n个interval 放到一个container里如何把一个文件 copy to multiple machine efficiently?
insert interval 没必要二分吧大意了,尼玛
问个算法题, 关于区间 overlap的大家来讨论一下c++吧
问个Facebook 电面题[板上牛人多]问个算法题
问个merge interval的变体题问个简单的数学编程题吧(google interview)
一道老题目CS问个连续乘法的面试题~
相关话题的讨论汇总
话题: num话题: sum话题: len话题: time话题: size
进入JobHunting版参与讨论
1 (共1页)
P*******b
发帖数: 1001
1
实时显示前一个小时,前一天,前一星期的总点击量,有什么比较efficient的方法?
谢谢
M********5
发帖数: 715
2
做这种的系统本身应该就会有一个保存浏览量的container(比如vector),比如说它
的保存单位是1min,那么用sliding window,过一分钟,淘汰最老的,进来最新的,可
以吗?
p*****2
发帖数: 21240
3

貌似就是这样。

【在 M********5 的大作中提到】
: 做这种的系统本身应该就会有一个保存浏览量的container(比如vector),比如说它
: 的保存单位是1min,那么用sliding window,过一分钟,淘汰最老的,进来最新的,可
: 以吗?

h****e
发帖数: 928
f*********m
发帖数: 726
5
滑动这个窗口,每次只报告落入窗口内的点击次数,对吗?
上次看到有人用Interval tree.

【在 M********5 的大作中提到】
: 做这种的系统本身应该就会有一个保存浏览量的container(比如vector),比如说它
: 的保存单位是1min,那么用sliding window,过一分钟,淘汰最老的,进来最新的,可
: 以吗?

M********5
发帖数: 715
6
我是这么想的,没有看过interval tree,所以没法做比较。只是觉得sliding window
这个方法,没隔一分钟更新一次都是O(1)的效率,并且不需要额外的存储空间(假设系
统原来本身就有一个container)
你们都知道很多数据结构,怪不得我就面挂了。。。

【在 f*********m 的大作中提到】
: 滑动这个窗口,每次只报告落入窗口内的点击次数,对吗?
: 上次看到有人用Interval tree.

f*********m
发帖数: 726
7
每隔一分钟就把落入(一分钟)窗口的click次数加起来吗?或者等要数据的时候再加。
要是这样的话,那计算每一天的click数(窗口大小为一天),其计算量不小啊。

window

【在 M********5 的大作中提到】
: 我是这么想的,没有看过interval tree,所以没法做比较。只是觉得sliding window
: 这个方法,没隔一分钟更新一次都是O(1)的效率,并且不需要额外的存储空间(假设系
: 统原来本身就有一个container)
: 你们都知道很多数据结构,怪不得我就面挂了。。。

M********5
发帖数: 715
8
你没有明白我说的意思,
std::vector num_time; //这个num_time每隔一分钟都会被push进一个新的值,
我们假设这是个系统的container,它里面已经有超过一个week的数据量
//initialization,
{
long sum_one_hour=0;
long sum_one_day=0;
long sum_one_week=0;
size_t len = num_time.size();
for(size_t i=1; i<=60; i++)
sum_one_hour += num_time[len-i];
for(size_t i=1; i<=1440; i++)
sum_one_day += num_time[len-i];
for(size_t i=1; i<=10080; i++)
sum_one_week += num_time[len-i];
}
// 每一分钟call一次
void onTimer(){
size_t len = num_time.size();
sum_one_hour = sum_one_hour - num_time[len-61] + num_time[len-1];
sum_one_day = sum_one_day - num_time[len-1441] + num_time[len-1];
sum_one_week = sum_one_week - num_time[len-10081] + num_time[len-1];
}
没有具体的写class的结构,只是个大概的idea,你可以自己组织这些结构在class里面
该怎么安排,应该不难写

加。

【在 f*********m 的大作中提到】
: 每隔一分钟就把落入(一分钟)窗口的click次数加起来吗?或者等要数据的时候再加。
: 要是这样的话,那计算每一天的click数(窗口大小为一天),其计算量不小啊。
:
: window

f*********m
发帖数: 726
9
哦,了解,我也想着用一个计数器什么的,不过没有楼主这么具体。
这个方法看样子挺有效的,若是container存在这个假设成立的话(应该总有一个东西
存储不同时刻的点击量)。

【在 M********5 的大作中提到】
: 你没有明白我说的意思,
: std::vector num_time; //这个num_time每隔一分钟都会被push进一个新的值,
: 我们假设这是个系统的container,它里面已经有超过一个week的数据量
: //initialization,
: {
: long sum_one_hour=0;
: long sum_one_day=0;
: long sum_one_week=0;
: size_t len = num_time.size();
: for(size_t i=1; i<=60; i++)

s****0
发帖数: 117
10
skip list应该可以

【在 P*******b 的大作中提到】
: 实时显示前一个小时,前一天,前一星期的总点击量,有什么比较efficient的方法?
: 谢谢

1 (共1页)
进入JobHunting版参与讨论
相关主题
CS问个连续乘法的面试题~问个算法题, 关于区间 overlap的
问个算法题问个Facebook 电面题
问个几道结构设计题问个merge interval的变体题
问个google面试题一道老题目
问个static STL container的问题G的电面题,是什么意思啊?
问个题目关于 max overlap interval 的一题
把n个interval 放到一个container里如何把一个文件 copy to multiple machine efficiently?
insert interval 没必要二分吧大意了,尼玛
相关话题的讨论汇总
话题: num话题: sum话题: len话题: time话题: size