算法------设计哈希映射
设计哈希映射
不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能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;}}}
算法------设计哈希映射相关推荐
- LeetCode——706,设计哈希映射
数据结构核心原理与算法应用 /*** \* Created: liuhuichao* \* Date: 2019/8/14* \* Time: 30:41 PM* \* Description: 设计 ...
- Leetcode刷题100天—706. 设计哈希映射(哈希表)—day74
前言: 作者:神的孩子在歌唱 一个算法小菜鸡 大家好,我叫智 706. 设计哈希映射 难度简单248 不使用任何内建的哈希表库设计一个哈希映射(HashMap). 实现 MyHashMap 类: My ...
- 哈希表题目:设计哈希映射
文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 前言 解法一 思路和算法 代码 复杂度分析 解法二 思路和算法 代码 复杂度分析 题目 标题和出处 标题:设计哈希映射 出处:706. ...
- 706. 设计哈希映射
链接:706. 设计哈希映射 题解:https://leetcode-cn.com/problems/design-hashmap/solution/xiang-jie-hashmap-de-she- ...
- leetcode 706. 设计哈希映射
不使用任何内建的哈希表库设计一个哈希映射(HashMap). 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象 void put(int key, int value) 向 ...
- LeetCode(706)——设计哈希映射(JavaScript)
不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get(key ...
- 力扣 706. 设计哈希映射
题目 不使用任何内建的哈希表库设计一个哈希映射(HashMap). 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象 void put(int key, int value) ...
- 算法--------设计哈希集合
设计哈希集合 不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值 ...
- LeetCode哈希表(哈希集合,哈希映射)
文章目录 哈希表 1.原理 2.复杂度分析 题目&推荐列表 哈希集合的应用 0.常用解题模板 1.lc217 存在重复元素 2.lc136 只出现一次的数字 3.快乐数 哈希映射的应用 0.常 ...
最新文章
- swift中delegate与block的反向传值
- R语言计算回归模型的SST、SSR以及SSE指标实战
- PHP脚本批量清除nginx缓存的方法
- iOS中MVC设计模式
- Swift之深入解析协议Protocol的底层原理
- 元素周期表排列的规律_中考化学:金属活动性顺序表和元素周期表规律总结
- MySQL学习笔记17:别名
- Windows操作系统,启动Tomcat之后DOS窗口乱码处理
- python计算机代码_python告白代码,只属于程序员的浪漫
- 软件测试面试题!收藏起来,每天看一看,月薪20K!
- 第三堂:Java程序流程控制
- perl脚本 linux,linux – 通过Perl脚本设置环境变量
- g4600黑苹果efi_Hackintosh黑苹果长期维护机型EFI列表及安装教程整理
- java架构师有哪些证书,22年最新
- The jar of this class file belongs to container 'JUnit 4' which does not allow ...
- 还在用老掉牙的后台模板?来试试这款人类高质量后台模板(Admin Plus)
- notepad++7.3.1中文版
- h5拍摄身份证_H5接口调用,身份证识别
- win10下设置显示文件后缀名以及显示隐藏文件
- 怎样用计算机表白我爱你,怎样用简单有“内涵”的话向喜欢的人表白 我爱你!...
热门文章
- php ci项目总结,分享关于php CI框架使用的一点小总结
- nginx php 错误日志,PHP 错误与异常的日志记录
- 查看mysql数据库服务_MySQL数据库之mysql5.7基础 查看mysql的服务状态
- yolov3网络结构图_目标检测——YOLO V3简介及代码注释(附github代码——已跑通)...
- java实现人字拼,地板怎么玩花式人字拼铺法 人字拼地板家居实例图
- 华为麒麟810芯片鸿蒙,华为自研麒麟810实体芯片首曝光 传说中的“鸿蒙”要来了?...
- 脚本大全_抖音文案大全2020励志:抖音最火励志搞笑句子,直接套用上热门
- 用python画爱心动图_编写Python爬虫抓取暴走漫画上gif图片的实例分享
- 油猴脚本第一家,网页网盘链接实时判断+资源搜索网站导航,资源重度患者的福利...
- 说说项目从0-1过程中的那点事儿