首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >菜鸟的每日力扣系列——2034. 股票价格波动

菜鸟的每日力扣系列——2034. 股票价格波动

作者头像
才浅Coding攻略
发布2022-12-12 17:38:40
发布2022-12-12 17:38:40
47500
代码可运行
举报
文章被收录于专栏:才浅coding攻略才浅coding攻略
运行总次数:0
代码可运行

力扣2034. 股票价格波动

这道题首先可以使用暴力法,在__init__初始化时用max来每次排序拿取最大的时间戳,在最终结果分别用max取最大min取最小值。这样做可以实现,但是时间复杂度很高。我们可以用哈希表+有序列表来解决时间戳有序的问题,使用哈希表能更快地找到要替换的元素。

代码语言:javascript
代码运行次数:0
运行
复制
from sortedcontainers import SortedList


class StockPrice:
    def __init__(self):
        self.max_time = 0
        self.price = SortedList()  # 使用有序列表存放价格
        self.res = {}

    def update(self, timestamp: int, price: int) -> None:
        if timestamp in self.res:  # 如果结果集中存放了时间戳
            self.price.remove(self.res[timestamp])  # 结果集删除掉哈希表对应的结果
        self.price.add(price)  # 存入新的价格
        self.res[timestamp] = price  # 将新价格及时间戳放入哈希表
        self.max_time = max(self.max_time, timestamp)

    def current(self) -> int:
        return self.res[self.max_time]

    def maximum(self) -> int:
        return self.price[-1]  # 有序列表中最后一位即为最大值

    def minimum(self) -> int:
        return self.price[0]  # 有序列表中第一位即为最大值


stockPrice = StockPrice()
stockPrice.update(1, 10)
stockPrice.update(2, 5)
print(stockPrice.current())  # 5
print(stockPrice.maximum())  # 10
stockPrice.update(1, 3)
print(stockPrice.maximum())  # 5
stockPrice.update(4, 2)
print(stockPrice.minimum())  # 2

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 才浅coding攻略 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档