news 2026/3/14 1:49:08

LC.981 | 基于时间的键值存储 | 哈希 | upper_bound快速定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.981 | 基于时间的键值存储 | 哈希 | upper_bound快速定位

输入:

  • set(key, value, timestamp)
  • get(key, timestamp)

要求:

  • 同一个key在不同timestamp可以存多次
  • get需要返回:timestamp_prev <= timestamp的最大那次对应的 value
  • 如果不存在返回空串""

输出:

  • set:无返回
  • getstring

思路:

这题的核心就是:对每个 key,把 (timestamp -> value) 存起来,并且能快速找“<= timestamp 的最大时间点”。

数据结构选择:

  • 外层:unordered_map<string, ...>通过 key 快速定位一组记录
  • 内层:map<int, string>自动按 timestamp 升序存放,支持二分相关操作

get(key, timestamp)怎么找?

  • upper_bound(timestamp):它返回第一个 > timestamp 的迭代器
  • 那么“<= timestamp 的最大值”就是它的前一个位置
  • 特判两种情况:
    1. 这个 key 压根不存在 ->""
    2. upper_bound指向 begin,说明所有 timestamp 都 > 目标 ->""
    3. 否则--it返回答案

复杂度:

  • 时间复杂度:
    • set:O(log M)
    • get:O(log M)
    • 其中 M 是某个 key 下存了多少条记录
  • 空间复杂度:O(总记录数)

classTimeMap{unordered_map<string,map<int,string>>m;public:TimeMap(){}voidset(string key,string value,inttimestamp){m[key][timestamp]=value;}stringget(string key,inttimestamp){if(m.find(key)==m.end())return"";map<int,string>&time_m=m[key];autoit=time_m.upper_bound(timestamp);// first > timestampif(it==time_m.begin())return"";// all > timestamp--it;// last <= timestampreturnit->second;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 7:23:23

【物联网】ESP32-C3 门禁系统方案

一、方案概述 核心特性 低成本开源&#xff1a;完全自主可控&#xff0c;无供应商锁定断电安全&#xff1a;电控锁断电自动锁闭&#xff0c;机械钥匙备份三重控制&#xff1a;Wi-Fi MQTT 蓝牙备用 机械钥匙应急极简部署&#xff1a;3个门可在2-3天内完成部署 技术架构 设备层…

作者头像 李华
网站建设 2026/3/9 19:19:13

深度学习计算机毕设之基于卷积网络结构的火灾检测系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/8 21:51:36

环境仿真软件:EcoPath with Ecosim_(8).模型验证与不确定性分析v1

模型验证与不确定性分析 在环境仿真软件中&#xff0c;模型验证和不确定性分析是确保模型可靠性和准确性的关键步骤。这些步骤不仅有助于评估模型的性能&#xff0c;还可以识别和量化模型中的不确定性来源&#xff0c;从而提高模型的预测能力。本节将详细介绍模型验证的基本方法…

作者头像 李华
网站建设 2026/3/9 0:43:12

积分旁瓣电平-matlab函数

%% ISL 计算 % 该示例用于采用我自己编写的ISL公式计算ISL clear all; close all; clear; N 128; %信号长度 plotEnableHigh 1; randPhaSig exp(1j*2*pi*rand(N,1)); %生成随机相位编码信号 mlb 0; %设置主瓣宽度为0&#xff0c;即只有自相关延迟为0的值 figure; plot(re…

作者头像 李华