5895. 获取单值网格的最小操作数
生活随笔
收集整理的這篇文章主要介紹了
5895. 获取单值网格的最小操作数
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
5895. 獲取單值網(wǎng)格的最小操作數(shù)
給你一支股票價(jià)格的數(shù)據(jù)流。數(shù)據(jù)流中每一條記錄包含一個(gè) 時(shí)間戳?和該時(shí)間點(diǎn)股票對應(yīng)的 價(jià)格?。
不巧的是,由于股票市場內(nèi)在的波動性,股票價(jià)格記錄可能不是按時(shí)間順序到來的。某些情況下,有的記錄可能是錯(cuò)的。如果兩個(gè)有相同時(shí)間戳的記錄出現(xiàn)在數(shù)據(jù)流中,前一條記錄視為錯(cuò)誤記錄,后出現(xiàn)的記錄 更正?前一條錯(cuò)誤的記錄。
請你設(shè)計(jì)一個(gè)算法,實(shí)現(xiàn):
更新 股票在某一時(shí)間戳的股票價(jià)格,如果有之前同一時(shí)間戳的價(jià)格,這一操作將?更正?之前的錯(cuò)誤價(jià)格。
找到當(dāng)前記錄里 最新股票價(jià)格?。最新股票價(jià)格?定義為時(shí)間戳最晚的股票價(jià)格。
找到當(dāng)前記錄里股票的 最高價(jià)格?。
找到當(dāng)前記錄里股票的 最低價(jià)格?。
請你實(shí)現(xiàn)?StockPrice?類:
- StockPrice()?初始化對象,當(dāng)前無股票價(jià)格記錄。
- void update(int timestamp, int price)?在時(shí)間點(diǎn) timestamp?更新股票價(jià)格為 price?。
- int current()?返回股票 最新價(jià)格?。
- int maximum()?返回股票 最高價(jià)格?。
- int minimum()?返回股票 最低價(jià)格?。
解題思路
- void update(int timestamp, int price)?在時(shí)間點(diǎn) timestamp?更新股票價(jià)格為 price?。
- int current()?返回股票 最新價(jià)格?。
- int maximum()?返回股票 最高價(jià)格?。
- int minimum()?返回股票 最低價(jià)格?。
我們的目標(biāo)是實(shí)現(xiàn)上述4個(gè)方法。
代碼
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();*/總結(jié)
以上是生活随笔為你收集整理的5895. 获取单值网格的最小操作数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到老鼠咬自己的脚是怎么回事
- 下一篇: 38. 外观数列