返回信息流命题:选择一个算法,以最低复杂度来实现两个集合之间的相似度计算
举例:集合A (a,b,c,d,e),集合B (b,e,f,a,c,j,k),A和B之间一致元素为a,b,c,e。A的相似度为4/5,B的相似度为4/7。两个集合的数量级通常为万级,最大为百万级,元素无序存储
这是一条镜像帖。来源:北邮人论坛 / java / #57514同步于 2017/9/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【问题】一道面试题~
qwerabc
2017/9/16镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
如果是时间复杂度的话,对两个AB分别排序,假如说用n*logn的排序算法(例如快速排序,或者随即快速排序),那么排序需要花费2*n*logn,(不失一般性假设A,B大小相同),排序完成后可以再线性时间n内找出两个集合的相似元素个数,所以总的时间复杂度应该是n*logn。如果A,B中的数据有特殊分布,可以使用计数排序等时间复杂度为n的排序算法的话,那么总的复杂度应该在线性时间内n完成。
他最后强调了数据量,不需要考虑海量数据的处理吗
【 在 nanguohao 的大作中提到: 】
: 如果是时间复杂度的话,对两个AB分别排序,假如说用n*logn的排序算法(例如快速排序,或者随即快速排序),那么排序需要花费2*n*logn,(不失一般性假设A,B大小相同),排序完成后可以再线性时间
: .........
发自「贵邮」
【 在 qwerabc 的大作中提到: 】
: 他最后强调了数据量,不需要考虑海量数据的处理吗
:
: 发自「贵邮」
额,还没参加过面试,不知道它最后强调数据量的用意,不过如果不是大数据量的话,进行优化没有太大的意义