Мне нужно найти минимальное/максимальное значение в изменяющемся большом наборе, в С++ это может быть
#include<set>
using namespace std;
int minVal(set<int> & mySet){
return *mySet.begin();
}
int maxVal(set<int> & mySet){
return *mySet.rbegin();
}
int main(){
set <int> mySet;
for(..;..;..){
// add or delete element in mySet
...
// print the min and max value in the set
printf("%d %d\n", minVal(mySet), maxVal(mySet));
}
}
В C++ каждая операция запроса выполняется за O(1), но в python я пытался использовать встроенные методы min и max, но они слишком медленные. Каждая минимальная/максимальная операция занимает время O(n) (n - длина моего набора). Есть ли какой-нибудь элегантный и эффективный способ сделать это? Или любой тип данных поддерживает эту операцию?
mySet=set()
for i in range(..):
# add or delete element in mySet
...
# print the min and max value in the set
print(min(mySet),max(mySet))
heapq
подходит для быстрого нахождения минимума, но не максимума набора. 23.12.2020