我有[id, name, act, value, type]
形式的数据流。
id
是整数,name
是字符串,act
可以是'add','update'或'delete',value
是整数,{{ 1}}是type
或L
。我们只能添加一次R
,执行多次更新,然后删除id
。我显然在寻找一种数据结构,该结构可以让我有效地插入那些数据。
我还需要能够尽可能快地每次获得id
的最高L
值和name
的最低R
值。
我相信我将需要使用堆来在恒定时间内获得name
的{{1}}和min
值。我的问题是,我无法找到一种方法来同时删除和更新现有数据。
答案 0 :(得分:0)
这里的措词有点不清楚。让我尝试改写一下:您正在寻找一个良好的数据结构,以便按照上述形式进行一系列操作,就可以添加,删除或更新项目(使用其ID号找到)。而且,您还希望维护一些有关整个数据结构的摘要统计信息,例如最高的L和最低的R值。
听起来正确吗?
如果您的身份证号码不在特定范围内,那么词典字典听起来可能是正确的答案;如果词典列表不正确,则听起来似乎是一个正确的答案。
答案 1 :(得分:0)
排序使这成为另一种问题。因此,您正在寻找一种在数据结构中按字符串名称按字母顺序排序的方法,在数据结构中添加和减去数据项?一种常见的实现方法是使用二进制搜索树。 BST将使您在树中具有n个元素的O(log(n))的插入时间复杂度。在每个元素上,您都可以存储其他数据。然后,您可以分别维护最高的L和最低的R值,并在每次添加的值超过这些值中的一个时更新这些值。如果删除的值等于这些限制之一,则必须遍历整个数据结构以获取新的限制值。