【发布时间】:2020-12-28 07:22:54
【问题描述】:
我对 CodeSignal 进行了测试,但无法解决此问题。
创建一个允许以下操作的数据结构。
insert x y - 插入带有键 x 和值 y 的对象。
get x - 返回带有键 x 的对象的值。
addToKey x - 将 x 添加到地图中的所有键
addToValue y - 将 y 添加到地图中的所有值。
每个操作的时间复杂度应该是O(log(N))
我能够在 Java 中使用数组和 LinkedList 制作哈希映射。但是我无法将时间复杂度提高到 O(log(N))。
在我的实现中,插入和获取的时间复杂度为 O(1)(最坏情况下为 O(N))。 addToKey 和 addToValue 的时间复杂度是 O(N),因为我必须迭代所有元素来修改键和值。
什么是适合这个问题的数据结构?
【问题讨论】:
-
键和值是数字吗?如果不是,那么将 x/y 添加到所有键/值意味着什么?
-
这是一个 HashMap 问题,但这是一个 BST 问题。创建一个具有 2 个 int、key 和 value 的节点,并通过比较键创建一个 BST
-
"addToValue y - 将 y 添加到地图中的所有值。" 我怀疑这可以在不到
O(N)的时间内完成,或者如果这可能是O(1)您将附加值的总和分别保存在另一个变量中 -
@Cid 即使我也这么想,密钥必须是唯一的数字,所以应该只更新 1 个密钥。 hashMap 中的 key 不能超过一个
标签: java algorithm kotlin data-structures