题目:
分析:
看到这题首先进行分析,最大最小是去绝对price,最新取决去最大的times,初始化就是一个类的初始化,updata就是放值的过程,所以我们可以为price与times作一个哈希表,用一个int来存最大的times,用一个有序集合来进行最大最小的取值。
代码:
class StockPrice {
int maxTimestamp;
HashMap<Integer, Integer> timePriceMap;
TreeMap<Integer, Integer> prices;
public StockPrice() {
maxTimestamp = 0;
timePriceMap = new HashMap<Integer, Integer>();
prices = new TreeMap<Integer, Integer>();
}
public void update(int timestamp, int price) {
maxTimestamp = Math.max(maxTimestamp, timestamp);
int prevPrice = timePriceMap.getOrDefault(timestamp, 0);
timePriceMap.put(timestamp, price);
if (prevPrice > 0) {
prices.put(prevPrice, prices.get(prevPrice) - 1);
if (prices.get(prevPrice) == 0) {
prices.remove(prevPrice);
}
}
prices.put(price, prices.getOrDefault(price, 0) + 1);
}
public int current() {
return timePriceMap.get(maxTimestamp);
}
public int maximum() {
return prices.lastKey();
}
public int minimum() {
return prices.firstKey();
}
}