日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 2034. 股票价格波动(set + map)

發(fā)布時間:2024/7/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 2034. 股票价格波动(set + map) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給你一支股票價格的數(shù)據(jù)流。數(shù)據(jù)流中每一條記錄包含一個 時間戳 和該時間點股票對應(yīng)的 價格

不巧的是,由于股票市場內(nèi)在的波動性,股票價格記錄可能不是按時間順序到來的。
某些情況下,有的記錄可能是錯的。如果兩個有相同時間戳的記錄出現(xiàn)在數(shù)據(jù)流中,前一條記錄視為錯誤記錄,后出現(xiàn)的記錄 更正 前一條錯誤的記錄。

請你設(shè)計一個算法,實現(xiàn):

  • 更新 股票在某一時間戳的股票價格,如果有之前同一時間戳的價格,這一操作將 更正 之前的錯誤價格。
  • 找到當(dāng)前記錄里 最新股票價格 。最新股票價格 定義為時間戳最晚的股票價格。
  • 找到當(dāng)前記錄里股票的 最高價格
  • 找到當(dāng)前記錄里股票的 最低價格

請你實現(xiàn) StockPrice 類:

  • StockPrice() 初始化對象,當(dāng)前無股票價格記錄。
  • void update(int timestamp, int price) 在時間點 timestamp 更新股票價格為 price 。
  • int current() 返回股票 最新價格 。
  • int maximum() 返回股票 最高價格 。
  • int minimum() 返回股票 最低價格 。
示例 1: 輸入: ["StockPrice", "update", "update", "current", "maximum", "update", "maximum", "update", "minimum"] [[], [1, 10], [2, 5], [], [], [1, 3], [], [4, 2], []] 輸出: [null, null, null, 5, 10, null, 5, null, 2]解釋: StockPrice stockPrice = new StockPrice(); stockPrice.update(1, 10); // 時間戳為 [1] ,對應(yīng)的股票價格為 [10] 。 stockPrice.update(2, 5); // 時間戳為 [1,2] ,對應(yīng)的股票價格為 [10,5] 。 stockPrice.current(); // 返回 5 ,最新時間戳為 2 ,對應(yīng)價格為 5 。 stockPrice.maximum(); // 返回 10 ,最高價格的時間戳為 1 ,價格為 10 。 stockPrice.update(1, 3); // 之前時間戳為 1 的價格錯誤,價格更新為 3 。// 時間戳為 [1,2] ,對應(yīng)股票價格為 [3,5] 。 stockPrice.maximum(); // 返回 5 ,更正后最高價格為 5 。 stockPrice.update(4, 2); // 時間戳為 [1,2,4] ,對應(yīng)價格為 [3,5,2] 。 stockPrice.minimum(); // 返回 2 ,最低價格時間戳為 4 ,價格為 2 。提示: 1 <= timestamp, price <= 10^9 update,current,maximum 和 minimum 總 調(diào)用次數(shù)不超過 10^5 。 current,maximum 和 minimum 被調(diào)用時,update 操作 至少 已經(jīng)被調(diào)用過 一次 。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/stock-price-fluctuation
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

2. 解題

  • set 有序
struct cmp{bool operator()(pair<int,int> a, pair<int,int> b) const{if(a.second == b.second)return a.first < b.first;//這句必須寫,不然只按second檢查,second可能有重復(fù)// 刪除的時候,按值刪除,會刪除多個 item return a.second < b.second;} }; class StockPrice {int curtime = 0, curprice = 0;set<pair<int,int>, cmp> s; // 記錄 <time, price> 按價錢排序unordered_map<int, int> t_p; // 記錄 time 對應(yīng)的 price public:StockPrice() {}void update(int timestamp, int price) {if(timestamp >= curtime){curtime = timestamp;curprice = price;}if(t_p.find(timestamp) != t_p.end())s.erase({timestamp, t_p[timestamp]});s.insert({timestamp, price});t_p[timestamp] = price;}int current() {return curprice;}int maximum() {return (--s.end())->second;}int minimum() {return s.begin()->second;} };

412 ms 163.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!

總結(jié)

以上是生活随笔為你收集整理的LeetCode 2034. 股票价格波动(set + map)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。