前几天我的朋友面试头条,给出了这样一道面试题:
有一天的log的数据量,求一天中用户在线峰值和持续时间。
他面试结束后与我讨论,让我也做一下,我晚上就用了点时间做了这个题目。
写完之后我们讨论发现因为思路不同,且他的方法更好,就记录下来跟大家分享一下。
事先声明一个log实体:
/// <summary>
/// 登录日志
/// </summary>
public class Log
{
/// <summary>
/// 登录时间
/// </summary>
public int LoginTime { get; set; }
/// <summary>
/// 登出时间
/// </summary>
public int LogoutTime { get; set; }
}
因为只求峰值数据,太多的字段没有加。
创建假数据:
//模拟数据
var logs = new List<Log>{
new Log{ LoginTime=2, LogoutTime=5 },
new Log{ LoginTime=3, LogoutTime=6 },
new Log{ LoginTime=3, LogoutTime=4 },
new Log{ LoginTime=4, LogoutTime=8 },
new Log{ LoginTime=4,