题目

  哈希表常见的三个操作是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功能的哈希表相关推荐

  1. 算法设计与分析——散列表/哈希表(Hash Table):直接寻址表

    分类目录:<算法设计与分析>总目录 相关文章: ·散列表/哈希表(Hash Table)(一):基础知识 ·散列表/哈希表(Hash Table)(二):直接寻址表 ·散列表/哈希表(Ha ...

  2. LeetCode 2353. 设计食物评分系统 维护哈希表+set

    设计一个支持下述操作的食物评分系统: 修改 系统中列出的某种食物的评分. 返回系统中某一类烹饪方式下评分最高的食物. 实现 FoodRatings 类: FoodRatings(String[] fo ...

  3. 除留余数法构造哈希表_哈希表算法原理

    基本概念 哈希表(Hash Table)是一种根据关键字直接访问内存存储位置的数据结构.通过哈希表,数据元素的存放位置和数据元素的关键字之间建立起某种对应关系,建立这种对应关系的函数称为哈希函数. 哈 ...

  4. 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查

    03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...

  5. 趣味算法——探索哈希表的神秘世界

    文章目录 前言: 一.哈希表的魔力 二.哈希表的灵魂--哈希函数 1. 什么是哈希函数 2. 哈希函数的特性 3. 哈希冲突 三.解决冲突的艺术 1. 开放寻址法 2. 链地址法 3. 冲突解决策略的 ...

  6. C++ 哈希表查询_进入哈希函数结界的世界

    1. 前言 哈希表或称为散列表,是一种常见的.使用频率非常高的数据存储方案. 哈希表属于抽象数据结构,需要开发者按哈希表数据结构的存储要求进行 API 定制,对于大部分高级语言而言,都会提供已经实现好 ...

  7. 04.openssl编程——哈希表

    4.1    哈希表 在一般的数据结构如线性表和树中,记录在结构中的相对位置与记录的关键字之间不存在确定的关系,在结构中查找记录时需要进行一系列的关键字比较.这一类查找方法建立在比较的基础上,查找的效 ...

  8. [Java]源码角度深入理解哈希表,手撕常见面试题

    专栏简介 :java语法及数据结构 题目来源:leetcode,牛客,剑指offer 创作目标:从java语法角度实现底层相关数据结构,达到手撕各类题目的水平. 希望在提升自己的同时,帮助他人,,与大 ...

  9. 哈希表——高效率的利器

    关于数据的处理,不同的数据结构各有千秋. 线性表中的栈和队列对增删有严格要求,它们会更关注数据的顺序. 数组和字符串需要保持数据类型的统一,并且在基于索引的查找上会更有优势. 树的优势则体现在数据的层 ...

最新文章

  1. Zarafa 7.0.11/7.1.2 发布
  2. vc 国际化的资源文件处理
  3. 基于Huffman算法的文件解压缩
  4. js 调用 oc 的解释
  5. 计算机对农业领域带来的变革,智慧农业将给农业带来哪些变化?
  6. python模拟登陆
  7. mySQL 数据库错误
  8. python审计分析_【干货】Python自动化审计及实现
  9. [******] 堆排序
  10. 为什么越来越多的人都不喜欢用信用卡?
  11. 笔记本电脑如何重装系统win11专业版
  12. dojo uploader使用,ps.返回值
  13. 新装的电脑执行maven install命令一直报Could not find artifact jdk.tools:jdk.tools:jar:1.7
  14. 应用数理统计之概率论复习与补充
  15. 计算机无法启动无法修复工具,windows资源保护无法启动修复服务的解决方法
  16. 高佣次方递增营销联盟模式
  17. Fedora Linux添加Canon打印机驱动
  18. JAVA五子棋单机版
  19. git+gerrit+jenkins+sonar 持续集成开发环境搭建
  20. 高频交易四大派系大揭秘

热门文章

  1. 外企面试官们爱提的十个问题
  2. 关于sendmail报错“did not issue MAIL/EXPN/VRFY/ETRN during connection to
  3. Django环境的搭建以及最简示例
  4. 英特尔将Nervana技术融入产品路线图
  5. Cisco easy *** basic ASA
  6. git checkout -b dev origin/dev详解
  7. 极客学院 git教程
  8. PAT甲级1121 Damn Single :[C++题解]哈希表、结构体
  9. POJ1363Rails队列和栈应用
  10. Linux 套接字编程 套接字选项SO_BINDTODEVICE 绑定接口 示例