求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要
求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
解析:
一天有60*60*24 = 86400秒
创建一个大小为86400的整型数组num_change[86400],用于记录每一秒中人数的变化。遍历一遍日志文件,把登录时间对应的数组值
加1,退出时间对应的数组值减1,这样遍历一遍日志文件后就得到了每一秒中人数的变化,变化可为正值也可为负值。
再创建一个大小为86400的整型数组online_num[86400],用于记录每一秒中的在线人数,初始化全部为0。第1秒的在线人数
online_num[0] = num_change[0],第n+1秒的在线人数online[n] = online[n-1] + num_change[n],依次类推,这样遍历一遍
num_change[86400],我们就可以得到每一秒中论坛的在线人数online_num[86400]。