【发布时间】:2015-03-19 15:13:10
【问题描述】:
我可以使用什么样的数据结构来解决这个问题:
如果输入包含:
- +1 - 插入值为 Ki 的元素
- 0 - 查找并打印第 K 个最大元素
- -1 - 删除值为 Ki 的元素
示例输入:
8
+1 5
+1 3
+1 7
0 2
-1 3
0 1
+1 10
0 3
然后输出:
5
7
5
【问题讨论】:
-
老实说,您可以使用任何容器。哪个容器最好有待商榷。
-
一个保持排序的容器。添加/删除元素始终保持排序顺序(从大到小)。找到第 K 个最大的变得微不足道:访问索引 K 处的元素。
-
std::set可能是最简单的。只是从大到小排序。我不认为性能真的是这里的问题,所以放轻松
标签: c++ data-structures