Data structures 更新、插入、删除、最大值、为O(log(N))中的每个元素添加值

Data structures 更新、插入、删除、最大值、为O(log(N))中的每个元素添加值,data-structures,Data Structures,我需要一个数据结构,它将一个键与一个值(两个整数)相关联,并且能够在O(log(N))中执行以下操作: 1.取下钥匙 2.向所有现有值添加一个整数 3.获得最大值 4.添加新密钥或更新现有密钥 有可能做到这一点吗?您没有提到编程语言,但Java中类似TreeMap的东西应该适合您的需要。它是一棵红黑树,结合了一个键值方案。 它使您的钥匙始终处于排序状态 它有O(log(N))用于删除、更新、插入和检索。然而,迭代整个树将始终是O(N),不幸的是,因此2是不可能的 您没有提到编程语言,但Java中

我需要一个数据结构,它将一个键与一个值(两个整数)相关联,并且能够在
O(log(N))
中执行以下操作:

1.取下钥匙

2.向所有现有值添加一个整数

3.获得最大值

4.添加新密钥或更新现有密钥


有可能做到这一点吗?

您没有提到编程语言,但Java中类似TreeMap的东西应该适合您的需要。它是一棵红黑树,结合了一个键值方案。 它使您的钥匙始终处于排序状态


它有O(log(N))用于删除、更新、插入和检索。然而,迭代整个树将始终是O(N),不幸的是,因此2是不可能的

您没有提到编程语言,但Java中类似TreeMap的东西应该适合您的需要。它是一棵红黑树,结合了一个键值方案。 它使您的钥匙始终处于排序状态


它有O(log(N))用于删除、更新、插入和检索。然而,迭代整个树将始终是O(N),不幸的是,因此2是不可能的

我不认为你能在O(log(N))时间内迭代所有现有的值,所以2基本上是不可能的。我想可能有一个树结构,并记住键间隔上的和。我不认为我理解这有什么帮助,和会与实际值不同步,不?我不认为你能在O(log(N))时间内迭代所有现有的值,所以2基本上是不可能的。我想可能有一个树结构,并记住键间隔上的和。我不认为我理解这会有什么帮助,和会与实际值不同步,不是吗?