Leetcode 2161 Solution

This article provides solution to leetcode question 2161 (stock-price-fluctuation)

https://leetcode.com/problems/stock-price-fluctuation

Solution

class StockPrice {
    map<int, int> price_map;
    set<pair<int, int>> price_set;

public:
    StockPrice() {

    }

    void update(int timestamp, int price) {
        auto it = price_map.find(timestamp);
        if (it != price_map.end())
        {
            int old_price = it->second;
            price_set.erase(make_pair(old_price, timestamp));
        }

        price_map[timestamp] = price;
        price_set.insert(make_pair(price, timestamp));
    }

    int current() {
        auto it = --price_map.end();
        return it->second;
    }

    int maximum() {
        auto it = --price_set.end();
        return it->first;
    }

    int minimum() {
        auto it = price_set.begin();
        return it->first;
    }
};

/**
 * 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();
 */