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的用户
根据用户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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28