数据结构搜索记录

时间:2017-04-26 12:31:57

标签: data-structures

面试面板提出的问题..网络应用程序用户可以选择喜欢的运动,一个用户有一些最喜欢的运动。用户约翰有足球,足球,网球等收藏运动。用户Alen喜欢BaseBall,BasketBall。

考虑数百万用户,数据结构中的哪种算法用于搜索与Football或scoccer相关联的用户。

首先我给出了HashMap的答案但面试小组告诉我它导致内存问题,另一种方式我可以使用二进制搜索树,但他对答案不满意。 任何人都可以向我解释一下使用DS算法让所有用户都喜欢运动的好方法。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用HashMap,将用户作为关键字和体育列表映射为您提到的值。在面试中首先提出这个解决方案是很常见的,看它是否满足了面试官。

更好的解决方案是构建用户和体育的图表,其中将存在从体育项目节点即足球到用户节点(即foo,bar)的单向边缘。对于运动项目(即足球)的任何查询,我们可以将football作为源节点遍历图形。将遍历的所有节点是其中一个最喜欢的体育是足球的用户列表。这样,它将节省空间。

考虑到每个查询遍历图的时间复杂度,图遍历的时间复杂度为O(E),其中E = all users在最坏的情况下。因此,我们可以使用HashMap缓存一些频繁的查询结果。同样,为了应对空间,我们可以使用HashMap模拟LRU缓存。

希望它有所帮助!