其他题目---设计有setAll功能的哈希表
来源:互联网 发布:淘宝怎么发布虚拟产品 编辑:程序博客网 时间:2024/06/11 02:37
【题目】
哈希表常见的三个操作是put、get和containsKey,而且这三个操作的时间复杂度为O(1)。现在想加一个setAll功能,就是把所有的记录的value值都设成统一的值。请设计并实现这种有setAll功能的哈希表,并且put、get、containsKey和setAll四个操作的时间复杂度都为O(1)。
【基本思路】
加入时间戳。
1、把每一个记录都加上一个时间,标记每条记录是合适建立的
2、设置一个setAll记录也加上一个时间,标记setAll记录何时建立
3、查询记录时,如果某条记录的时间早于setAll记录的时间,说明setAll是最新数据,返回setAll记录的值。如果某条记录的时间晚于setAll记录的时间,说明记录的值是最新数据,返回该条记录的值
【代码实现】
#python3.5class MyValue: def __init__(self, value, time): self.__value = value self.__time = time def getValue(self): return self.__value def getTime(self): return self.__timeclass MyHashMap: def __init__(self): self.map = {} self.time = 0 self.setAll = MyValue(None, -1) def containsKey(self, key): return key in self.map def put(self, key, value): self.map[key] = MyValue(value, self.time) self.time += 1 def setAll_(self, value): self.setAll = MyValue(value, self.time) self.time += 1 def get(self, key): if self.containsKey(key): if self.map[key].getTime() < self.setAll.getTime(): return self.setAll.getValue() else: return self.map[key].getValue() else: return None
阅读全文
2 0
- 其他题目---设计有setAll功能的哈希表
- 其他题目---设计RandomPool结构
- 其他题目---设计可以变更的缓存结构
- 其他题目---设计一个没有扩容负担的堆结构
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有 getMin功能的栈
- 设计一个有getMin功能的栈
- 设计一个有getMin功能的栈
- UVA210 concurrency simulator (双向队列 & 模拟)
- BZOJ2976 出圈游戏 [EX_CRT]
- Ubuntu vi 上下左右变ABCD问题解决方法
- iOS 一一 核心动画
- Opsive的ThirdPersonController使用手记(2)
- 其他题目---设计有setAll功能的哈希表
- 虚拟机安装cenos7后ifcfg看网卡无inet地址掩码等信息
- Windows环境下,安装MySQL多实例,并实现Mysql的主从同步
- 初学C#感受
- RK3288模块单独编译
- Java SE(五)——高级语言特性(collection接口+异常)
- C语言用选择排序的方法合并有序数组
- 1005. Spell It Right (20)
- JavaScript