您需要一种快速的数据结构,可以在不到O(n)的时间内添加,删除和查询max元素(如果可以接受O(n)或O(nlogn),则可以使用数组)。您可以使用堆,平衡的二进制搜索树,跳过列表或在O(log(n))中执行这些操作的任何其他排序数据结构。
好消息是,大多数流行语言都实现了已排序的数据结构,可以为您支持这些操作。C
++具有
std::set和
std::multiset(您可能需要后者),而Java具有
TreeSet。

您需要一种快速的数据结构,可以在不到O(n)的时间内添加,删除和查询max元素(如果可以接受O(n)或O(nlogn),则可以使用数组)。您可以使用堆,平衡的二进制搜索树,跳过列表或在O(log(n))中执行这些操作的任何其他排序数据结构。
好消息是,大多数流行语言都实现了已排序的数据结构,可以为您支持这些操作。C
++具有
std::set和
std::multiset(您可能需要后者),而Java具有
TreeSet。