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]
1.SortedList()
是python中一个专门提供排序的库,通过add()
增加,discard()
删除(即使不存在数据也不会报错),增加到数组的数字会从小到大自动排序,这样就可以通过[0]
来访问数组最小值,[-1]
来访问数组最大值。
2.首先初始化类,price
代表一个从小到大自动排序的价格表,timePriceMap
存放的是时间点所对应的价格,maxTimestamp
代表是当前的时间,也就是最大的时间戳。
3.先判断当前时间戳是否已经存在,如果存在就删除内容,然后就将当前时间戳所对应的价格存入timePriceMap
的字典中,并且将价格放入SortedList
自动排序,通过max()
和当前时间戳的大小进行比对从而进行更新最新时间。