面试题,一个key-value容器的实现问题?

发布于 2022-09-01 06:15:01 字数 185 浏览 15 评论 0

今天在网上看到了一道别人分享的数据结构面试题,要求实现一个key-value容器,支持如下操作:
1.根据key获取元素
2.根据key删除元素
3.插入元素
4.根据value获取key
以上操作时间复杂度均要求在O(log N)以内。
用平衡树可以实现前三条,有没有哪种数据结构可以一并实现第四条的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陪我终i 2022-09-08 06:15:01

一下能想到的是个很二的办法:用两棵树……
没特殊约束的话,说不定我真的会这么实现。

哭了丶谁疼 2022-09-08 06:15:01

前三个都很好做,但是第四个问题描述得不够清楚,因为可能多个key对应的都是相同的value,所以根据value去获取key就比较麻烦了,结果可能是一个数组。如果保证一一对应,key和value也都是唯一的,那么像楼上说的简单的两棵平衡树就可以解决

泪冰清 2022-09-08 06:15:01

java的hashmap源码中是这样实现的,一个数组用来存放key值,根据key的hash值(hash这个值)存储到对应index位置,每个位置从头节点开始,是一个链表,依次把相同key的元素连起来。当遇到相同key的时候就遍历链表进行插入或者查询操作。
这个应该可以满足你的要求吧?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文