【发布时间】:2021-03-04 08:38:03
【问题描述】:
考虑将 元组 (id, date, views) 存储在一些支持操作
insert(id, date, views) 的数据结构中 - 将元素插入数据结构和元素
如果已经存在,它只是更新视图。因此,每个 id 都将是唯一的,用于存储 date 和 view。
只有视图会得到更新。
delete(id) - 删除对应 id 的元素
search(id) - 返回对应 id 对应的元组
findelementWithMaxView (日期) - 考虑所有具有第二部分的元组 (date)
大于或等于 date(parameter)返回查看次数最多的任何人。
我们可以制作什么样的数据结构,可以在 O(log(n)) 时间内支持所有这些操作
我的想法:
我们可以简单地用 postId 作为键创建一个 AVL 树。这将支持插入、删除和搜索
在 O(log n) 中。但是仅仅做这个对 O(log n) 中的 findelementWithMaxView(date) 函数没有帮助
如果我用 date 键创建另一棵 AVL 树,并且树的每个节点都存储一个额外的信息
那是 (max-views, id) 其中 max-view 是具有该节点的子树的最大视图
id 是具有最大视图的元组的 id。
不确定这是否会完成 O(log n) 中的所有操作
【问题讨论】: