为了账号安全,请及时绑定邮箱和手机立即绑定

如下情况所示,难道我要遍历一遍所有用户才可以么?

如下情况所示,难道我要遍历一遍所有用户才可以么?

斯蒂芬大帝 2023-04-03 14:10:23
有很多用户,用户之间存在好友关系。现在要针对某一个用户,算出跟该用户共同好友数最多的一些用户,按照共同好友数递减排列。类似qq空间,facebook的好友推荐这种。
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

说一个最简单的思路

最简单的图算法,遍历你所有的好友节点,取出每个好友的好友(二度好友)的列表,然后按二度好友的ID为key做计数操作,最后按计数排序就行了。遍历的用户数是你的二度好友的人数。

按这个思路,相信目前流行的图数据库(比如Neo4j)都能实现你的需求。


查看完整回答
反对 回复 2023-04-07
?
不负相思意

TA贡献1777条经验 获得超10个赞

我的想法是,利用集合的运算进行求解比较快捷。所有的人构成一个S全集,每一个用户的好友就是全集中的一个子集,而你和所有的好友求共同好友就是子集与子集的求交操作。交集最大的那个就是你所求的好友。

利用逻辑运算的按位与运算求集合的交集是很快当的。哈哈!


查看完整回答
反对 回复 2023-04-07
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信