981. 基于时间的键值存储

题目链接 981. 基于时间的键值存储
思路 哈希+二分
题解链接 哈希表+二分
关键点 理解题意
时间复杂度 O(logn)
空间复杂度 O(n)

代码实现:

class TimeMap:
def __init__(self):
self.dct = defaultdict(list)
def set(self, key: str, value: str, timestamp: int) -> None:
self.dct[key].append((timestamp, value))
def get(self, key: str, timestamp: int) -> str:
lst = self.dct[key]
left, right = -1, len(lst)
while left + 1 < right:
mid = (left + right) // 2
if lst[mid][0] > timestamp:
right = mid
else:
left = mid
if right == 0:
return ""
else:
return self.dct[key][right - 1][1]
Python-标准库
class TimeMap:
def __init__(self):
self.dct = defaultdict(list)
def set(self, key: str, value: str, timestamp: int) -> None:
self.dct[key].append((timestamp, value))
def get(self, key: str, timestamp: int) -> str:
upper_bound = bisect_right(self.dct[key], timestamp, key=lambda _: _[0])
if upper_bound == 0:
return ""
else:
return self.dct[key][upper_bound-1][1]
posted @   WrRan  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示