- SortedList增删改查的复杂度均为 O ( l o g n ) O(logn) O(logn)
- 四种操作分别为:
add, remove/discard/pop(弹出某个索引的元素,默认为最大值), count/index
python
from sortedcontainers import SortedList
class StockPrice:
def __init__(self):
self.price = SortedList()
self.timePriceMap = {}
self.maxTimestamp = 0
def update(self, timestamp: int, price: int) -> None:
if timestamp in self.timePriceMap:
self.price.discard(self.timePriceMap[timestamp]) # 删除原本的时间
self.price.add(price)
self.timePriceMap[timestamp] = price
self.maxTimestamp = max(self.maxTimestamp, timestamp)
def current(self) -> int:
return self.timePriceMap[self.maxTimestamp]
def maximum(self) -> int:
return self.price[-1]
def minimum(self) -> int:
return self.price[0]
# Your StockPrice object will be instantiated and called as such:
# obj = StockPrice()
# obj.update(timestamp,price)
# param_2 = obj.current()
# param_3 = obj.maximum()
# param_4 = obj.minimum()
参考