+ -
当前位置:首页 → 问答吧 → 2012人人笔试题

2012人人笔试题

时间:2011-10-12

来源:互联网

人人里的好友关系,例如A和B是好友,B和C是好友,且A和C不是好友,则称A和C是二度好友。现给出10w条好友关系,让你从中选出某个特定人的十度好友,要求时间复杂度为O(n)。

作者: gsbb2004   发布时间: 2011-10-12

广度优先遍历10W人的图。
记录每个节点跟起始节点的距离权值。
应该就可以了吧。

作者: zhengjiankang   发布时间: 2011-10-12

第一步:
根据用户ID或用户名做hash值,把好友关系组织成:
要红hash是因为不用hash的话插入是o(nlogn)的复杂度,用hash才能达到o(n)
用户A:用户A的好友列表
用户B:用户B的好友列表
用户C:用户C的好友列表
。。。。。。。。。。。

第二步:
所有用户的初始值设为max_int,A的值设为0
1,把A的好友列表的值设置为1
2,遍历用户列表,如果值为1,把该用户列表中值大于1的设置为2
3,遍历用户列表,如果值为2,把该用户列表中值大于2的设置为3
。。。。。。
4,遍历用户列表,如果值为9,把该用户列表中值大于9的设置为10

输出值为10的用户

作者: oo   发布时间: 2011-10-12

热门下载

更多