我可以使用哪种数据结构来解决此问题:
如果输入包含:
示例输入:
8
+1 5
+1 3
+1 7
0 2
-1 3
0 1
+1 10
0 3
输出:
5
7
5
答案 0 :(得分:-1)
数据结构:自平衡BST (例如红黑树)
c ++中的容器:设置
时间复杂性:
O(log(n))
O(log(n))
O(n)
答案 1 :(得分:-1)
我会使用某种形式的二叉搜索树:
std::set
可通过按键访问,看起来非常适合您的需求。
std::map
是一个关联容器,通常实现为红黑树。
在你的情况下,我会选择std::set
:
//getting the n-th element in set
auto it = std::next(myset.begin(), n);
为了完整起见,我还应该提一下std :: vector + std :: sort,它在算法上效果较差,但是如果你没有庞大的数据集,由于数据局部性(包含矢量),它会更高效。在预分配的内存块中以顺序方式对象。)