5895. 获取单值网格的最小操作数
生活随笔
收集整理的這篇文章主要介紹了
5895. 获取单值网格的最小操作数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
5895. 獲取單值網格的最小操作數
給你一支股票價格的數據流。數據流中每一條記錄包含一個 時間戳?和該時間點股票對應的 價格?。
不巧的是,由于股票市場內在的波動性,股票價格記錄可能不是按時間順序到來的。某些情況下,有的記錄可能是錯的。如果兩個有相同時間戳的記錄出現在數據流中,前一條記錄視為錯誤記錄,后出現的記錄 更正?前一條錯誤的記錄。
請你設計一個算法,實現:
更新 股票在某一時間戳的股票價格,如果有之前同一時間戳的價格,這一操作將?更正?之前的錯誤價格。
找到當前記錄里 最新股票價格?。最新股票價格?定義為時間戳最晚的股票價格。
找到當前記錄里股票的 最高價格?。
找到當前記錄里股票的 最低價格?。
請你實現?StockPrice?類:
- StockPrice()?初始化對象,當前無股票價格記錄。
- void update(int timestamp, int price)?在時間點 timestamp?更新股票價格為 price?。
- int current()?返回股票 最新價格?。
- int maximum()?返回股票 最高價格?。
- int minimum()?返回股票 最低價格?。
解題思路
- void update(int timestamp, int price)?在時間點 timestamp?更新股票價格為 price?。
- int current()?返回股票 最新價格?。
- int maximum()?返回股票 最高價格?。
- int minimum()?返回股票 最低價格?。
我們的目標是實現上述4個方法。
代碼
class StockPrice {//timeStamp ->priceMap<Integer, Integer> map = new HashMap<>();//price -> timeStampsTreeMap<Integer, Set<Integer>> up = new TreeMap<>();int curTime=-1,curPrice=-1;public StockPrice() {}public void update(int timestamp, int price) {if (timestamp>=curTime){curTime=timestamp;curPrice=price;}if(map.containsKey(timestamp)){Integer old = map.get(timestamp);up.get(old).remove(timestamp);if (up.get(old).isEmpty())up.remove(old);}map.put(timestamp, price);if (!up.containsKey(price))up.put(price,new HashSet<>());up.get(price).add(timestamp);}public int current() {return curPrice;}public int maximum() {return up.lastKey();}public int minimum() {return up.firstKey();}}/*** Your StockPrice object will be instantiated and called as such:* StockPrice obj = new StockPrice();* obj.update(timestamp,price);* int param_2 = obj.current();* int param_3 = obj.maximum();* int param_4 = obj.minimum();*/總結
以上是生活随笔為你收集整理的5895. 获取单值网格的最小操作数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到老鼠咬自己的脚是怎么回事
- 下一篇: 老公做梦梦到老婆出轨是什么意思