706.设计哈希映射

2020-04-08

设计哈希映射

不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能

  • put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。
  • get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。
  • remove(key):如果映射中存在这个键,删除这个数值对。

题解:

思路1: 使用对象设计哈希集合

/**
 * Initialize your data structure here.
 */
var MyHashMap = function () {
  this.hashContent = {}; // 使用对象模拟hash表
};
MyHashMap.prototype.put = function (key, value) {
  this.hashContent[key] = value; // 没有值则赋值 有值则覆盖
};
MyHashMap.prototype.get = function (key) {
  // 用hasOwnProperty是因为 如果key的val就是undefined 那么用if就无法判断这个key到底存不存在
  if (this.hashContent.hasOwnProperty(key)) return this.hashContent[key];
  // 也可以用if(key in this.hashContent)
  // if (key in this.hashContent) return this.hashContent[key];
  return -1;
};
MyHashMap.prototype.remove = function (key) {
  if (this.hashContent.hasOwnProperty(key)) delete this.hashContent[key];
};

原文地址:https://www.cnblogs.com/lanpang9661/p/12657800.html

时间: 2024-10-07 09:00:38

706.设计哈希映射的相关文章

LeetCode 706. Design HashMap (设计哈希映射)

题目标签:HashMap 题目让我们设计一个 hashmap, 有put, get, remove 功能. 建立一个 int array, index 是key, 值是 value,具体看code. Java Solution: Runtime: 76 ms, faster than 27.53% Memory Usage: 58.2 MB, less than 31.57% 完成日期:03/18/2019 关键点:int array class MyHashMap { int [] map;

leetcode 705 设计哈希映射

一  题目概述 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. remove(value):将给定值从哈希集合中删除.如果哈希集合中没有这个值,什么也不做. 二 java算法实现 class MyHashSet { private Node[]arr=new Node[1024]; //2的指数,计算hash时可以用 & private class N

哈希映射

哈希来源问题:关于统计一个字符串集合中,求出现次数最多的字符串思路:建立一个哈希映射(HashMap),其键为"字符串",值为"字符串出现次数",然后遍历字符串集合,如果字符串已存在,将键为该字符串的值加1,否则添加键值对".. 详解javascript哈希映射的HashMap 参考脚本之家 http://www.jb51.net/article/84771.htm Hash Map 的简单实现 //定义一个Hash Map var hashMap={ S

《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)

Array(数组)是JavaScript中较为复杂的数据类型,同Java.C#.VB等程序语言的数组相比,Javascript数组中的元素不必为相同的数据类型,可以在数组每个元素上混合使用数字.日期.字符串.Object,甚至添加一个嵌套数组. 一.创建数组 1.var arr1 = new Array(); /var  arr2 = new Array(length); /var arr3 = new Array(element1,element2...); var arr4 = [eleme

705.设计哈希集合

2020-04-07 设计哈希集合 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. remove(value):将给定值从哈希集合中删除.如果哈希集合中没有这个值,什么也不做. 题解: 思路1: 使用数组设计哈希集合 (不建议) 之所以不建议是因为性能差 每次add,contains或者delete都要遍历看看这个值是不是存在 // 使用数组做hash

javaEE 用户、部门、角色、权限实体的关系设计与hibernate映射配置文件关系总结

文章中的项目文件已经放到Github上,欢迎大家Follow,star, 地址:https://github.com/lawlite19/SmartEducation 一:设计实体,我这里通过uml设计,然后直接可以生成java实体类(方便查看各个类的关系) (1)用户登录类User与用户详细信息类UserDetails为一对一关系: (2)用户详细信息类UserDetails与部门为多对一关系:(一个部门有多个用户) (3)部门类是自关联的,有上级部门: (3)用户详细类UserDetails

HASH 字符串哈希 映射转化

哈希HASH的本质思想类似于映射.离散化. 哈希,通过给不同字符赋不同的值.并且钦定一个进制K和模数,从而实现一个字符串到一个模意义下的K进制数上. 它的主要目的是判重,用于DFS.BFS判重(八数码),字符串判断相等.出现等等. 本篇总结字符串哈希以及一些应用例题. 为什要用字符串哈希? 因为取出一个字符串是O(n)的,比较一遍又是O(n)的,况且要比较两个甚至多个.这就成了n^2级别的了. 那我们比较数字怎么就不用这么麻烦呢?因为数字可以直接比较,(虽然不知道内部是怎么实现的,反正比一位一位

[Swift]LeetCode705. 设计哈希集合 | Design HashSet

Design a HashSet without using any built-in hash table libraries. To be specific, your design should include these functions: add(value): Insert a value into the HashSet. contains(value) : Return whether the value exists in the HashSet or not. remove

LeetCode 705. Design HashSet (设计哈希集合)

题目标签:HashMap 题目让我们设计一个 hashset,有add,contains,remove 功能. 建立一个boolean array,index 是数字的值,具体看code. Java Solution: Runtime: 58 ms, faster than 90.21% Memory Usage: 56.3 MB, less than 68.53% 完成日期:03/18/2019 关键点:boolean array class MyHashSet { boolean [] se