84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
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