0
点赞
收藏
分享

微信扫一扫

2022.1.23-----leetcode.2034

 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);//获取该时间戳之前价格,无则为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();
        }
    }
举报

相关推荐

0 条评论