如果您嵌入了这样的哈希映射:
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>();
Map<String, String> innerMap = new HashMap<String, String>();
innerMap.put("x","y");
map.put("z", innerMap);
innerMap = map.get("z"); <---------- O(1) time
String y = innerMap.get("x"); <-------- O(1) time
这是否意味着只要两个地图搜索时间都保持相对接近O(1)那么你基本上可以在O(1)时间内搜索第二级的hashmap?
我的实习责任让我对数据进行了大量的比较,并且我前几天使用了类似的东西。我有一个字符串键值,它是某个&#34; Plan&#34;的名称。和一个值作为hashmap。内部hashmap具有员工ID和关系的字符串键值(如果员工被访问两次意味着他们在外部地图的计划中有两个不同的覆盖级别,那么他们的关系将会更新。我在这里选择DS一个好的?我试图实现O(1)
的查找和编辑时间答案 0 :(得分:4)
x = tf.ones([100, 250])
norm = tf.sqrt(tf.reduce_sum(tf.square(x), axis=1, keepdims=True))
assert norm.shape == [100, 1]
res = x / norm
并不意味着“一步完成”。这意味着无论人口多大,它都会在(大约)相同的时间内完成。这就是为什么O(1)
也被称为常数时间。
固定时间操作的固定重复次数也是恒定时间,即O(1)
。
答案是“是”,您的数据结构具有O(1)
时间复杂度,可以从嵌套地图中访问值。
答案 1 :(得分:2)
您基本上都在询问在另一个hashmap中的hashmap中查找元素的运行时是否是常量。答案是是。因为首先考虑一个hashmap的hashmap。如前所述,使用密钥查找值所需的时间是不变的。总运行时间只是这两倍;因此O(1)* 2 = O(2)仍为O(1)。当然,您必须考虑过多的冲突,这会减慢搜索过程。当然,这可以通过选择合适的载荷因子来避免。