设计有setAll功能的哈希表
题目
哈希表常见的三个操作是put、get和containsKey,而且这三个操作的时间复杂度为O(1)。现在想加一个setAll功能,就是把所有的记录的value值都设成统一的值。请设计并实现这种有setAll功能的哈希表,并且put、get、containsKey和setAll四个操作的时间复杂度都为O(1)。
基本思路
加入时间戳。
1、把每一个记录都加上一个时间,标记每条记录是合适建立的
2、设置一个setAll记录也加上一个时间,标记setAll记录何时建立
3、查询记录时,如果某条记录的时间早于setAll记录的时间,说明setAll是最新数据,返回setAll记录的值。如果某条记录的时间晚于setAll记录的时间,说明记录的值是最新数据,返回该条记录的值
clas MyValue:def __init__(self,value,time):self.value = valueself.time = timedef getValue(self):return self.valuedef getTime(self):return self.timeclass MyHashMap:def __init__(self):self.map = {}self.time = {}self.setAll = MyValue(None,-1)def containKey(self,key):return key in self.mapdef put(self,key,value):self.map[key] = MyValue(value,self.time)self.time +=1def setAll(self,value):self.setAll = MyValue(value,self.time)self.time +=1def 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
设计有setAll功能的哈希表相关推荐
- 算法设计与分析——散列表/哈希表(Hash Table):直接寻址表
分类目录:<算法设计与分析>总目录 相关文章: ·散列表/哈希表(Hash Table)(一):基础知识 ·散列表/哈希表(Hash Table)(二):直接寻址表 ·散列表/哈希表(Ha ...
- LeetCode 2353. 设计食物评分系统 维护哈希表+set
设计一个支持下述操作的食物评分系统: 修改 系统中列出的某种食物的评分. 返回系统中某一类烹饪方式下评分最高的食物. 实现 FoodRatings 类: FoodRatings(String[] fo ...
- 除留余数法构造哈希表_哈希表算法原理
基本概念 哈希表(Hash Table)是一种根据关键字直接访问内存存储位置的数据结构.通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数. 哈 ...
- 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查
03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...
- 趣味算法——探索哈希表的神秘世界
文章目录 前言: 一.哈希表的魔力 二.哈希表的灵魂--哈希函数 1. 什么是哈希函数 2. 哈希函数的特性 3. 哈希冲突 三.解决冲突的艺术 1. 开放寻址法 2. 链地址法 3. 冲突解决策略的 ...
- C++ 哈希表查询_进入哈希函数结界的世界
1. 前言 哈希表或称为散列表,是一种常见的.使用频率非常高的数据存储方案. 哈希表属于抽象数据结构,需要开发者按哈希表数据结构的存储要求进行 API 定制,对于大部分高级语言而言,都会提供已经实现好 ...
- 04.openssl编程——哈希表
4.1 哈希表 在一般的数据结构如线性表和树中,记录在结构中的相对位置与记录的关键字之间不存在确定的关系,在结构中查找记录时需要进行一系列的关键字比较.这一类查找方法建立在比较的基础上,查找的效 ...
- [Java]源码角度深入理解哈希表,手撕常见面试题
专栏简介 :java语法及数据结构 题目来源:leetcode,牛客,剑指offer 创作目标:从java语法角度实现底层相关数据结构,达到手撕各类题目的水平. 希望在提升自己的同时,帮助他人,,与大 ...
- 哈希表——高效率的利器
关于数据的处理,不同的数据结构各有千秋. 线性表中的栈和队列对增删有严格要求,它们会更关注数据的顺序. 数组和字符串需要保持数据类型的统一,并且在基于索引的查找上会更有优势. 树的优势则体现在数据的层 ...
最新文章
- Zarafa 7.0.11/7.1.2 发布
- vc 国际化的资源文件处理
- 基于Huffman算法的文件解压缩
- js 调用 oc 的解释
- 计算机对农业领域带来的变革,智慧农业将给农业带来哪些变化?
- python模拟登陆
- mySQL 数据库错误
- python审计分析_【干货】Python自动化审计及实现
- [******] 堆排序
- 为什么越来越多的人都不喜欢用信用卡?
- 笔记本电脑如何重装系统win11专业版
- dojo uploader使用,ps.返回值
- 新装的电脑执行maven install命令一直报Could not find artifact jdk.tools:jdk.tools:jar:1.7
- 应用数理统计之概率论复习与补充
- 计算机无法启动无法修复工具,windows资源保护无法启动修复服务的解决方法
- 高佣次方递增营销联盟模式
- Fedora Linux添加Canon打印机驱动
- JAVA五子棋单机版
- git+gerrit+jenkins+sonar 持续集成开发环境搭建
- 高频交易四大派系大揭秘
热门文章
- 外企面试官们爱提的十个问题
- 关于sendmail报错“did not issue MAIL/EXPN/VRFY/ETRN during connection to
- Django环境的搭建以及最简示例
- 英特尔将Nervana技术融入产品路线图
- Cisco easy *** basic ASA
- git checkout -b dev origin/dev详解
- 极客学院 git教程
- PAT甲级1121 Damn Single :[C++题解]哈希表、结构体
- POJ1363Rails队列和栈应用
- Linux 套接字编程 套接字选项SO_BINDTODEVICE 绑定接口 示例