不是作业问题或类似的东西。所以,这是一个简单的问题陈述:你有一堆用户 U 1, U 2,...,U n。每个用户都有一组朋友,这是整个用户集的一个子集。U 1 -> U 2 , U 5 , U 8 , ..., U k
类似地,U 2可能有朋友 U 1,U 11,...,U k2。现在有一堆“Like”实体 L 1 , L 2 , L 3 , ... 很明显,每个用户都喜欢 Like 对象的子集。所以 U 1 -> L 1 , L 2 , L 5 , L 10 , ... U 2 -> L 4 , L 8 , L 10 , ...
现在的问题是,给定一个像上面这样的网络,给定一个用户 id,我们需要返回 HIS 网络中的最高赞以及几个喜欢它的朋友(朋友可能没有特定的顺序)。
我的想法:一个想法是维护用户及其朋友的哈希图。这是全球性的。
用户好友HashMap
| 用户 | 朋友的地图和他们的喜好|
现在,每个用户,我们还将维护一个最大的他喜欢的堆,按他们在他的网络中的频率排序。我们需要某种不相交的集合来开始,以及实际的最大堆。当查询进来时,给定一个用户 ID,我们从喜欢堆中检索顶部条目,并且对于每个喜欢,我们检索喜欢它的朋友。
总的来说,从数据结构的角度来看,我们正在查看全局哈希图,每个用户最大堆,每个用户不相交集。
这是解决这个问题的最好方法。我完全迷失了 : ( : ( 建议非常受欢迎。我们可以在这里使用最短路径/bfs/dfs 之类的东西吗?