设计哈希映射


不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。
get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。
remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap = new MyHashMap();
hashMap.put(1, 1);
hashMap.put(2, 2);
hashMap.get(1);            // 返回 1
hashMap.get(3);            // 返回 -1 (未找到)
hashMap.put(2, 1);         // 更新已有的值
hashMap.get(2);            // 返回 1
hashMap.remove(2);         // 删除键为2的数据
hashMap.get(2);            // 返回 -1 (未找到) 注意:所有的值都在 [0, 1000000]的范围内。
操作的总数目在[1, 10000]范围内。
不要使用内建的哈希库。

解决方法:

    class MyHashMap {private Node[] hasArray;/** Initialize your data structure here. */public MyHashMap() {hasArray = new Node[5000];}private int hash(int key) {return (key % hasArray.length) & (hasArray.length - 1);}/** value will always be non-negative. */public void put(int key, int value) {int i = hash(key);if (hasArray[i] == null) {hasArray[i] = new Node(key,value);}else {Node node = hasArray[i];if (node.key == key) {node.value = value;}else {Node temp = node;while (temp.next !=null){temp = temp.next;if (temp.key == key) {temp.value = value;return;}}Node next = new Node(key,value);temp.next = next;next.pre = temp;}}}/** Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key */public int get(int key) {Node node = hasArray[hash(key)];while (node != null){if (node.key == key) {return node.value;}node = node.next;}return -1;}/** Removes the mapping of the specified value key if this map contains a mapping for the key */public void remove(int key) {Node node = hasArray[hash(key)];while (node != null){if (node.key == key) {if (node.pre != null) {node.pre.next = node.next;if (node.next != null) {node.next.pre = node.pre;}}else {hasArray[hash(key)] = node.next;if (node.next != null) {node.next.pre = null;}}return;}node = node.next;}}public class Node{public Node next;public Node pre;public int value;public int key;public Node(int key,int value){this.key = key;this.value = value;}}}

算法------设计哈希映射相关推荐

  1. LeetCode——706,设计哈希映射

    数据结构核心原理与算法应用 /*** \* Created: liuhuichao* \* Date: 2019/8/14* \* Time: 30:41 PM* \* Description: 设计 ...

  2. Leetcode刷题100天—706. 设计哈希映射(哈希表)—day74

    前言: 作者:神的孩子在歌唱 一个算法小菜鸡 大家好,我叫智 706. 设计哈希映射 难度简单248 不使用任何内建的哈希表库设计一个哈希映射(HashMap). 实现 MyHashMap 类: My ...

  3. 哈希表题目:设计哈希映射

    文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 前言 解法一 思路和算法 代码 复杂度分析 解法二 思路和算法 代码 复杂度分析 题目 标题和出处 标题:设计哈希映射 出处:706. ...

  4. 706. 设计哈希映射

    链接:706. 设计哈希映射 题解:https://leetcode-cn.com/problems/design-hashmap/solution/xiang-jie-hashmap-de-she- ...

  5. leetcode 706. 设计哈希映射

    不使用任何内建的哈希表库设计一个哈希映射(HashMap). 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象 void put(int key, int value) 向 ...

  6. LeetCode(706)——设计哈希映射(JavaScript)

    不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get(key ...

  7. 力扣 706. 设计哈希映射

    题目 不使用任何内建的哈希表库设计一个哈希映射(HashMap). 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象 void put(int key, int value) ...

  8. 算法--------设计哈希集合

    设计哈希集合 不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值 ...

  9. LeetCode哈希表(哈希集合,哈希映射)

    文章目录 哈希表 1.原理 2.复杂度分析 题目&推荐列表 哈希集合的应用 0.常用解题模板 1.lc217 存在重复元素 2.lc136 只出现一次的数字 3.快乐数 哈希映射的应用 0.常 ...

最新文章

  1. swift中delegate与block的反向传值
  2. R语言计算回归模型的SST、SSR以及SSE指标实战
  3. PHP脚本批量清除nginx缓存的方法
  4. iOS中MVC设计模式
  5. Swift之深入解析协议Protocol的底层原理
  6. 元素周期表排列的规律_中考化学:金属活动性顺序表和元素周期表规律总结
  7. MySQL学习笔记17:别名
  8. Windows操作系统,启动Tomcat之后DOS窗口乱码处理
  9. python计算机代码_python告白代码,只属于程序员的浪漫
  10. 软件测试面试题!收藏起来,每天看一看,月薪20K!
  11. 第三堂:Java程序流程控制
  12. perl脚本 linux,linux – 通过Perl脚本设置环境变量
  13. g4600黑苹果efi_Hackintosh黑苹果长期维护机型EFI列表及安装教程整理
  14. java架构师有哪些证书,22年最新
  15. The jar of this class file belongs to container 'JUnit 4' which does not allow ...
  16. 还在用老掉牙的后台模板?来试试这款人类高质量后台模板(Admin Plus)
  17. notepad++7.3.1中文版
  18. h5拍摄身份证_H5接口调用,身份证识别
  19. win10下设置显示文件后缀名以及显示隐藏文件
  20. 怎样用计算机表白我爱你,怎样用简单有“内涵”的话向喜欢的人表白 我爱你!...

热门文章

  1. php ci项目总结,分享关于php CI框架使用的一点小总结
  2. nginx php 错误日志,PHP 错误与异常的日志记录
  3. 查看mysql数据库服务_MySQL数据库之mysql5.7基础 查看mysql的服务状态
  4. yolov3网络结构图_目标检测——YOLO V3简介及代码注释(附github代码——已跑通)...
  5. java实现人字拼,地板怎么玩花式人字拼铺法 人字拼地板家居实例图
  6. 华为麒麟810芯片鸿蒙,华为自研麒麟810实体芯片首曝光 传说中的“鸿蒙”要来了?...
  7. 脚本大全_抖音文案大全2020励志:抖音最火励志搞笑句子,直接套用上热门
  8. 用python画爱心动图_编写Python爬虫抓取暴走漫画上gif图片的实例分享
  9. 油猴脚本第一家,网页网盘链接实时判断+资源搜索网站导航,资源重度患者的福利...
  10. 说说项目从0-1过程中的那点事儿