zoukankan      html  css  js  c++  java
  • 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> time2priceMap
    2. TreeMap<Double, Integer> price2countMap

    priceupdate: insert new record into time2priceMap, update price count in price2countmap
    correction: 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 price2countmap
    high and low: lastkey and firstkey from price2countmap
    last: last entry's price from time2pricemap

    补充内容 (2017-2-4 07:00):
    这样好像都是O(log(n))
  • 相关阅读:
    (Java实现) 洛谷 P1106 删数问题
    (Java实现) 洛谷 P1603 斯诺登的密码
    (Java实现) 洛谷 P1036 选数
    (Java实现) 洛谷 P1012 拼数
    (Java实现) 洛谷 P1028 数的计算
    (Java实现) 洛谷 P1553 数字反转(升级版)
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1051 谁拿了最多奖学金
    (Java实现) 洛谷 P1106 删数问题
    目测ZIP的压缩率
  • 原文地址:https://www.cnblogs.com/EdwardLiu/p/6369029.html
Copyright © 2011-2022 走看看