哈希表

1.定义:

用对应关系f使得每个关键字都有对应的存储位置,建立映射关系,这样记录到连续的储存空间称为哈希表
S t o r a g e l o c a t i o n = f ( k e y ) Storage location=f(key) Storagelocation=f(key)
2.优点:

不需要遍历a[i]的值与key值是否相等后返回得到索引,可直接利用哈希表得到索引

3.根据对应关系f的不同构造方法也不同:

  • 除留余数法(常用)

f ( k e y ) = k e y m o d p ( p < = m ) f(key)=key mod p(p<=m) f(key)=keymodp(p<=m)

  • 折叠法
  • 平方取中法

4.python实现:

例题:两数之和(用字典模拟哈希表)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashmap={}
        for poi,num in enumerate(nums):
            hashmap[num] = poi
            for i,num in enumerate(nums):
                j = hashmap.get(target - num)
                if j is not None and i!=j:
                    return [i,j]


参考:数据结构之哈希表(HASH)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在JavaScript中,哈可以通过对象(Object)来实现。对象的属性名就是哈中的键,属性值就是哈中的值。以下是一个简单的哈的实现: 1. 定义一个HashTable类,包含以下方法: ```javascript class HashTable { constructor() { this.table = {}; } // 向哈中添加键值对 put(key, value) { this.table[key] = value; } // 从哈中获取指定键的值 get(key) { return this.table[key]; } // 从哈中移除指定键的值 remove(key) { delete this.table[key]; } // 判断哈中是否包含指定键 contains(key) { return this.table.hasOwnProperty(key); } // 获取哈中所有的键 getKeys() { return Object.keys(this.table); } // 获取哈中所有的值 getValues() { return Object.values(this.table); } // 获取哈中键值对的数量 size() { return Object.keys(this.table).length; } // 清空哈 clear() { this.table = {}; } } ``` 2. 创建一个HashTable对象,并向其中添加键值对: ```javascript const hashTable = new HashTable(); hashTable.put('name', 'Tom'); hashTable.put('age', 18); hashTable.put('gender', 'male'); ``` 3. 从哈中获取指定键的值: ```javascript const name = hashTable.get('name'); // 'Tom' ``` 4. 从哈中移除指定键的值: ```javascript hashTable.remove('gender'); ``` 5. 判断哈中是否包含指定键: ```javascript const hasAge = hashTable.contains('age'); // true const hasGender = hashTable.contains('gender'); // false ``` 6. 获取哈中所有的键: ```javascript const keys = hashTable.getKeys(); // ['name', 'age'] ``` 7. 获取哈中所有的值: ```javascript const values = hashTable.getValues(); // ['Tom', 18] ``` 8. 获取哈中键值对的数量: ```javascript const size = hashTable.size(); // 2 ``` 9. 清空哈: ```javascript hashTable.clear(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值