2336. 无限集中的最小数字
分析
- 使用有序集合
std::set来维护集合s,其特性是自动按升序排列元素:popSmallest()可以通过获取集合中的第一个元素*s.begin()来实现最小值的提取,时间复杂度为O(log n)addBack(num)通过插入操作,将数字加入集合,同时自动维护顺序,时间复杂度为O(log n)
- 由于题目给出
1 <= num <= 1000,因此初始化集合时,可以预先将s初始化为1 ~ 1000
时间复杂度
popSmallest():- 获取最小值
*s.begin():O(1) - 删除操作
s.erase():O(\log n) - 总时间复杂度:
O(logn)
- 获取最小值
addBack(num):- 插入操作
s.insert():O(logn)
- 插入操作
- 初始化操作:
插入
n个初始值:总复杂度为O(nlogn)
空间复杂度
主要存储集合 s,大小为集合中的元素个数,空间复杂度为 O(n)
C++代码
|
|