【发布时间】:2014-04-19 04:15:38
【问题描述】:
我有一个面试问题是在哈希表中搜索一个值并返回最小的键。
我的方法是通过键对哈希表进行排序并遍历它以找到与搜索值对应的键。
我用 Python 写了这个函数:
def smallestKey(x):
my_dict = {10:20, 5:30, -2:25, 1:20}
for key in sorted(dict.iterkeys()):
if (my_dict[key] == x):
print key
有没有更好的方法?我怎样才能在 Java 中做同样的事情?
【问题讨论】:
-
你最好对所有键进行线性搜索并记录最大值而不进行排序,因为排序需要
Theta(nlogn)。 -
[看起来][1] 您需要一个外部库才能在 Java 中执行此操作。 [1]:stackoverflow.com/questions/1670038/…
-
@C.B.有一点。
-
@C.B.谢谢!有道理。
-
@Ramya 检查 GETah 的答案,从 2011 年 10 月 20 日开始。它是双向映射的简单实现,您可以将其视为内部有两个映射的结构,键和值镜像.所以基本上在map1中使用k1和v1作为key和value,在map2中使用v1作为key,k1和value。因此,您可以双向查询地图。
标签: java dictionary hashmap hashtable reverse-lookup