84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
n个数,要求插入,查找最大最小值,删除最大最小值的时间复杂度都限制在O(log2n),应该用什么算法和数据结构?
人生最曼妙的风景,竟是内心的淡定与从容!
楼上两个答案的出发点不同。
平衡二叉树可以做到,但是原序列会被排序。在C++中,set 和 map 都可以满足要求。
而线段树可以求出区间最大或者最小值,不需要重新排序。没有现成的数据结构可用,你可以自己写个模板。
使用平衡二叉树
你们怎么用平衡二叉树呢,虽然可行;但如果只是最大最小值,那只需要使用一个heap,在C++中有现成数据结构,是STL中的priority_queue。
heap
priority_queue
线段树可解 ...
用C++ STL里的set
set
楼上两个答案的出发点不同。
平衡二叉树可以做到,但是原序列会被排序。
在C++中,set 和 map 都可以满足要求。
而线段树可以求出区间最大或者最小值,不需要重新排序。
没有现成的数据结构可用,你可以自己写个模板。
使用平衡二叉树
你们怎么用平衡二叉树呢,虽然可行;但如果只是最大最小值,那只需要使用一个
heap
,在C++中有现成数据结构,是STL中的priority_queue
。线段树可解 ...
用C++ STL里的
set