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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格

不巧的是,由于股票市场内在的波动性,股票价格记录可能不是按时间顺序到来的。
某些情况下,有的记录可能是错的。如果两个有相同时间戳的记录出现在数据流中,前一条记录视为错误记录,后出现的记录 更正 前一条错误的记录。

请你设计一个算法,实现:

  • 更新 股票在某一时间戳的股票价格,如果有之前同一时间戳的价格,这一操作将 更正 之前的错误价格。
  • 找到当前记录里 最新股票价格 。最新股票价格 定义为时间戳最晚的股票价格。
  • 找到当前记录里股票的 最高价格
  • 找到当前记录里股票的 最低价格

请你实现 StockPrice 类:

  • StockPrice() 初始化对象,当前无股票价格记录。
  • 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] ,对应的股票价格为 [10] 。
stockPrice.update(2, 5);  // 时间戳为 [1,2] ,对应的股票价格为 [10,5] 。
stockPrice.current();     // 返回 5 ,最新时间戳为 2 ,对应价格为 5 。
stockPrice.maximum();     // 返回 10 ,最高价格的时间戳为 1 ,价格为 10 。
stockPrice.update(1, 3);  // 之前时间戳为 1 的价格错误,价格更新为 3 。// 时间戳为 [1,2] ,对应股票价格为 [3,5] 。
stockPrice.maximum();     // 返回 5 ,更正后最高价格为 5 。
stockPrice.update(4, 2);  // 时间戳为 [1,2,4] ,对应价格为 [3,5,2] 。
stockPrice.minimum();     // 返回 2 ,最低价格时间戳为 4 ,价格为 2 。提示:
1 <= timestamp, price <= 10^9
update,current,maximum 和 minimum 总 调用次数不超过 10^5 。
current,maximum 和 minimum 被调用时,update 操作 至少 已经被调用过 一次 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/stock-price-fluctuation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

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可能有重复// 删除的时候,按值删除,会删除多个 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 对应的 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/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是python函数_什么是python函数

python函数是指组织好的、可重复使用的、用来实现单一或相关联功能的代码段。python函数包含系统中自带的一些函数、第三方函数、以及用户自定义的函数。函数是可以实现一些特定功能的小方法或是小程序。在Python中有很多内建函数&#xff0c;当然随着学习的深入&#xff0c;我…

LeetCode 2035. 将数组分成两个数组并最小化数组和的差(状态压缩DP)

文章目录1. 题目2. 解题1. 题目 给你一个长度为 2 * n 的整数数组。 你需要将 nums 分成 两个 长度为 n 的数组&#xff0c;分别求出两个数组的和&#xff0c;并 最小化 两个数组和之 差的绝对值 。 nums 中每个元素都需要放入两个数组之一。 请你返回 最小 的 数组和之差。 …

android--仿网易新闻主界面

主要是学习ActionBarDrawerLayoutActionBarDrawerToggle,很不错的教程,下面一步一步带你实现这个过程,有不足之处欢迎留言交流.下面先来一张效果图 根据图片分析,要实现的有侧边栏DrawerLayout,ActionBar的颜色和菜单以及ActionBarDrawerToggle的动画效果. 在这之前,Theme要改…

fastapi 查询参数和字符串校验 / 路径参数和数值校验

文章目录1. 约束限制2. 必须参数3. 查询参数列表 / 多个值4. 声明更多元数据5. 别名参数6. 弃用参数7. Path 路径参数8. 按需对参数排序learn from https://fastapi.tiangolo.com/zh/tutorial/query-params-str-validations/ 1. 约束限制 from typing import Optional from f…

数据库中包含开始时间、结束时间,并且查询条件也有开始时间、结束时间的查询方法...

分类&#xff1a; oracle学习数据库例&#xff1a;考试表中有两个字段&#xff1a;startDate、endDate&#xff0c;分别代表考试开始时间、结束时间。现在需要查询某一时间段内正在进行的考试&#xff0c;实际只要满足考试的时间段和查询条件的时间段有交集即可&#xff0c;包含…

LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色

文章目录1. 题目2. 解题1. 题目 总共有 n 个颜色片段排成一列&#xff0c;每个颜色片段要么是 ‘A’ 要么是 ‘B’ 。 给你一个长度为 n 的字符串 colors &#xff0c;其中 colors[i] 表示第 i 个颜色片段的颜色。 Alice 和 Bob 在玩一个游戏&#xff0c;他们 轮流 从这个字符…

LeetCode 2039. 网络空闲的时刻(BFS)

文章目录1. 题目2. 解题1. 题目 给你一个有 n 个服务器的计算机网络&#xff0c;服务器编号为 0 到 n - 1 。 同时给你一个二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi] 表示服务器 ui 和 vi 之间有一条信息线路&#xff0c;在 一秒 内它们之间可以传输 任意 数目…

LeetCode 2040. 两个有序数组的第 K 小乘积(嵌套二分查找)

文章目录1. 题目2. 解题1. 题目 给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k &#xff0c;请你返回第 k &#xff08;从 1 开始编号&#xff09;小的 nums1[i] * nums2[j] 的乘积&#xff0c;其中 0 < i < nums1.length 且 0 <…

数据库SQL优化大总结之 百万级数据库优化方案(转载)

原文地址&#xff1a;http://www.cnblogs.com/yunfeifei/p/3850440.html 网上关于SQL优化的教程很多&#xff0c;但是比较杂乱。近日有空整理了一下&#xff0c;写出来跟大家分享一下&#xff0c;其中有错误和不足的地方&#xff0c;还请大家纠正补充。 这篇文章我花费了大量的…

LeetCode 2042. 检查句子中的数字是否递增

文章目录1. 题目2. 解题1. 题目 句子是由若干 token 组成的一个列表&#xff0c;token 间用 单个 空格分隔&#xff0c;句子没有前导或尾随空格。 每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 &#xff0c;要么是一个由小写英文字母组成的 单词 。 示例&…

java shiro security_安全框架Shiro和SpringSecurity的比较

两个基本的概念安全实体&#xff1a;系统需要保护的具体对象数据权限&#xff1a;系统相关的功能操作&#xff0c;例如基本的CRUDShiro首先Shiro较之 Spring Security&#xff0c;Shiro在保持强大功能的同时&#xff0c;还在简单性和灵活性方面拥有巨大优势。Shiro是一个强大而…

LeetCode 2043. 简易银行系统

文章目录1. 题目2. 解题1. 题目 你的任务是为一个很受欢迎的银行设计一款程序&#xff0c;以自动化执行所有传入的交易&#xff08;转账&#xff0c;存款和取款&#xff09;。 银行共有 n 个账户&#xff0c;编号从 1 到 n 。每个账号的初始余额存储在一个下标从 0 开始的整数…

LeetCode 2044. 统计按位或能得到最大值的子集数目(状态压缩DP)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff0c;请你找出 nums 子集 按位或 可能得到的 最大值 &#xff0c;并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素&#xff08;或不删除&#xff09;得到&#xff0c;则…

fastapi 请求体 - 多个参数 / 字段Field / 嵌套模型

文章目录1. 混合使用 Path、Query 和请求体参数2. 多个请求体参数3. 请求体中的单一值4. 多个请求体参数和查询参数5. 嵌入单个请求体参数6. 字段7. 嵌套模型7.1 List 字段7.2 子模型作为类型8. 特殊类型校验9. 带有一组子模型的属性10. 任意 dict 构成的请求体learn from http…

java ltpa_LTPA Cookie原理

1. 什么是LTPA?Lightweight Third-Party Authentication (LTPA)是IBM Websphere和Domino产品中使用单点登录技术。当服务器配置好LTPA认证方式&#xff0c;用户通过浏览器成功登录后&#xff0c;服务器会自动发送一个session cookie给浏览器&#xff1b;此cookie中包含一个LTP…

fastapi 模式的额外信息,示例 / Cookie参数 / Header参数

文章目录1. Pydantic schema_extra2. Field 的附加参数3. Body 额外参数4. Cookie 参数5. Header 参数5.1 重复的 headerslearn from https://fastapi.tiangolo.com/zh/tutorial/schema-extra-example/ 添加一个将在文档中显示的 example 1. Pydantic schema_extra from typ…

Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法

1.绑定服务调用服务里面的方法&#xff0c;图解&#xff1a; 步骤&#xff1a; &#xff08;1&#xff09;在Activity代码里面绑定 bindService&#xff08;&#xff09;&#xff0c;以bind的方式开启服务 &#xff1b; bindService&#xff08;intent, new MyConn(), BIND_AUT…

LeetCode 1909. 删除一个元素使数组严格递增

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果 恰好 删除 一个 元素后&#xff0c;数组 严格递增 &#xff0c;那么请你返回 true &#xff0c;否则返回 false 。 如果数组本身已经是严格递增的&#xff0c;请你也返回 true 。 数组…

ATS push cache 测试

测试 ATS 注入缓存 参考了&#xff1a; http://serverfault.com/questions/471684/push-content-to-apache-traffic-servers-cache 得到返回&#xff1a;HTTP/1.0 400 Response Not Cachable 搜索得知&#xff0c;头部传入信息太少&#xff0c;必须包含反映时间的项。那个回答应…

fastapi 响应模型 / 响应状态码 / 表单参数

文章目录1. response_model2. 添加输出模型3. 响应模型编码参数4. response_model_include 和 response_model_exclude5. 代码复用&#xff1a;继承6. Union7. 任意 dict 的响应8. 响应状态码9. 表单参数learn from https://fastapi.tiangolo.com/zh/tutorial/response-model/ …