给定特定网站的所有用户的登录/注销时间:( userId,登录时间,注销时间)。存储此数据,以查询在给定时间范围内登录和注销的用户总数。
我应该使用哪种数据结构?以及如何实施它?
答案 0 :(得分:2)
您正在寻找的数据结构称为interval tree,它基本上有一个二进制搜索树,如格式,间隔的开始(登录时间)作为值(在BST中排序) )。
此DS具有以下时间复杂性:
答案 1 :(得分:0)
如果你想在一个程序中这样做:
只需创建一个包含类用户类型变量的简单数组。
用户类应具有以下属性:userId,loginTime,logoutTime。
检查在给定时间范围内登录和注销的用户总数将类似于:
for (user in userArray)
if (user.loginTime > inputLoginTime && user.logoutTime < inputLogoutTime)
count++;
您可以在O(n)时间内检查用户总数。
如果您想在服务器中执行此操作,例如。的MySQL。
使用userId,loginTime,logoutTime作为列创建表User。
SELECT COUNT(*) FROM User WHERE User.loginTime > inputLoginTime AND User.logoutTime < inputLogoutTime;
答案 2 :(得分:0)
我不认为有任何单一数据结构会比下面提到的方法更复杂: -