求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登录到退出会向一个日志文件中记下登录时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
思路:一天有 3600 * 24 = 86400秒
定义一个长度为86400的整形数组,int data[86400],每个整数对应这一秒的人数变化值,可能为正也可能为负,初始化数组为0
然后依次读入每个用户的登录时间个退出时间,对应登录时间的data[log in]++,对应退出时间的data[log out]--,如此一来,得到了每秒的人数变化
假设一天开始时论坛在线人数为0,则第1秒的在线人数online_num[1] = data[1],则第n秒的在线人数online_num[n] = online_num[n-1] + data[n]
这样就得到了一天中任意时刻的在线人数