G面經: Design Stock Price Display System

Implement a simple stock price display systemwhich will show High, Low and Last price for a given stock throughout one day.The data comes from a real-time feed and have the following messages:
PriceUpdate(t, P) -> Price of Stock A at timet is P.
Correction(t, NewP) -> Price of Stock A attime t is rectified to NewP
Remove(t) -> Disregard the price feedreceived at time t.
PriceUpdate(10100,850.50) -> high = 850.50, Low = 850.50, Last = 850.50
PriceUpdate(10200,852.25) -> high = 852.25, Low = 850.50, Last = 852.25
PriceUpdate(10300,848.00) -> high = 852.25, Low = 848.00, Last = 848.00
Correction(10200, 849.00) -> high = 850.50, Low = 848.00, Last 848.00
PriceUpdate(10400,855.00)  -> high = 855.00, Low = 848.00, Last = 855.00
Correction(10300, 853.00) -> high = 855.00, Low = 850.50, Last = 855.00
PriceUpdate(10500,854.00) -> high = 855.00, Low = 848.00, Last = 854.00
Correction(10500,853.25) -> high = 855.00, Low = 848.00, Last = 853.25
Remove(10300) -> high = 855.00, Low = 849.00, Last = 853.25

簡單說來PriceUpdate就是添加新的(timestamp, price), Correction是改以前的(timestamp, price), 求實現當前high(), low(), last()
簡單說來PriceUpdate就是添加新的(timestamp, price), Correction是改以前的(timestamp, price), 求實現當前high(), low(), last()
LZ是用的Heap + HashMap, 特別問了時間複雜度(我猜到他想考heap的remove(obj)複雜度)
follow Up是: 有沒有辦法把複雜度降到O(logN)
 
LZ是用的Heap + HashMap, 特別問了時間複雜度(我猜到他想考heap的remove(obj)複雜度)
LZ是用treeMap代替了Heap,這樣代價是每次找high,low也要logN search整個tree了
 
感受須要2個數據結構:
1. TreeMap<Long, Double> time2priceMap2. TreeMap<Double, Integer> price2countMappriceupdate: insert new record into time2priceMap, update price count in price2countmapcorrection: update record in time2pricemap, update prev price count, update prev price count (if 0, remove record), update new price count or needs to insert a new price record into price2countmaphigh and low: lastkey and firstkey from price2countmaplast: last entry's price from time2pricemap補充內容 (2017-2-4 07:00):這樣好像都是O(log(n))
相關文章
相關標籤/搜索