实时获取网站排名信息

时间:2017-09-23 22:43:14

标签: algorithm data-structures

我在接受采访时遇到了这个问题。

假设我们有访问网站的用户的日志信息,包括网站,用户,时间等信息。我们需要设计一个可以获取

信息的数据结构
  • 特定网站的前五名访问用户
  • 特定用户访问的前五名网站
  • 仅在一天内访问过100次的网站

全部实时

我想到的第一个想法是我们可以只使用数据库来存储日志,每次我们只需要为每个用户或每个网站进行计数和排序。但它不是实时的,因为我们需要做大量的计算来获取信息。

然后我认为我们可以为每个问题使用HashMap。例如,对于我们使用HashMap<Website, <TreeMap<User, count>>的每个网站,我们可以获得特定网站的前五名访问者。但是访调员说我们只能对所有三个问题使用一个数据结构,因为第二个问题会使用HashMap<User, <TreeMap<Website, count>>,它具有不同的键和值类型。

有人能想出这个问题的好方法吗?

1 个答案:

答案 0 :(得分:0)

带有泛型类型的地图地图,作为基本方法

第一张地图代表全球数据结构,其中包含三个问题的地图。

第一张内部地图,您将拥有网站作为密钥和前5名用户的列表。

第二张内部地图,您将把用户作为密钥,并列出他访问过的前5名网站。

对于最后一个问题,您可以将网站作为密钥,将访问者数量作为第三个内部地图上的值。

如果他们的意思是针对三个不同的问题拥有相同的数据结构,那么就要忘掉全球地图。

如果您想更深入了解,可以考虑使用邻接矩阵实施,其中您的用户和网站标识是您的列/行标识符,值是访问者数量。