n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法?
n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法和数据结构?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法和数据结构?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
楼上两个答案的出发点不同。
平衡二叉树可以做到,但是原序列会被排序。
在C++中,set 和 map 都可以满足要求。
而线段树可以求出区间最大或者最小值,不需要重新排序。
没有现成的数据结构可用,你可以自己写个模板。
使用平衡二叉树
你们怎么用平衡二叉树呢,虽然可行;但如果只是最大最小值,那只需要使用一个
heap
,在C++中有现成数据结构,是STL中的priority_queue
。线段树可解 ...
用C++ STL里的
set