我正在解决一个测验并需要一些建议。
测验摘要如下:
书签服务的Analayze数据(如美味,挖掘...)并提取具有两个以上常用标签的网址组。
- 每个书签数据包含1)user-id,2)url,以及3)标签数组。
- 与所有网址相比,所有标签的尺寸都相对较小。也就是说,人们为有限集的网站添加书签
- 分配给网址的所有代码都不同
- 如果不同的用户为同一个网址添加了书签,则不应该将其分组。(但是,这是一个可选条件。您可以忽略user_id并假设所有网址都不同。)
醇>
示例:
siteA - [tag1, tag2, tag3]
siteB - [tag1, tag2, tag4]
siteC - [tag1, tag3, tag5]
siteD - [tag1, tag2, tag6]
以下两组URL将是结果
(siteA, siteB, siteD), (siteA, siteC)
因为(siteA,siteB,siteD)共享两个常见标记(tag1,tag2)和(siteA,siteC)也共享两个常见标记(tag1,tag3)。
- 条件3,4并添加了一个例子。谢谢@btilly。
我的问题是
答案 0 :(得分:1)
我会创建一个新的数据结构,它是一个标签,是带有该标签的URL的哈希值。
然后,对于每对标记,您可以使用较少URL的标记,遍历它们,并查找它是否在另一个标记中,生成共享该标记对的组。
如果您有n
个标记,每个标记平均有m
个网址,则O(n * m)
生成新数据结构,O(n * n * m)
生成网址