当前位置:   article > 正文

python 哈希表_python实现哈希集合

python 哈希表 哈希集合

一、什么是哈希表

哈希表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表

给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。

二、python的内置函数set()

在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。创建集合set、集合set添加、集合删除、交集、并集、差集的操作都是非常实用的方法。

  1. #创建一个集合
  2. test_list = set([])
  3. #添加
  4. test_list.add()
  5. #删除
  6. test_list.remove()
  7. #更新
  8. test_list.update()

三、面试题目

不使用任何内建的哈希表库设计一个哈希集合

具体地说,你的设计应该包含以下的功能

  • add(value):向哈希集合中插入一个值。
  • contains(value) :返回哈希集合中是否存在这个值。
  • remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。

示例:

  1. MyHashSet hashSet = new MyHashSet();
  2. hashSet.add(1);
  3. hashSet.add(2);
  4. hashSet.contains(1); // 返回 true
  5. hashSet.contains(3); // 返回 false (未找到)
  6. hashSet.add(2);
  7. hashSet.contains(2); // 返回 true
  8. hashSet.remove(2);
  9. hashSet.contains(2); // 返回 false (已经被删除)

注意:

  • 所有的值都在 [0, 1000000]的范围内。
  • 操作的总数目在[1, 10000]范围内。
  • 不要使用内建的哈希集合库。

四、题解

  1. class MyHashSet:
  2. def __init__(self):
  3. self.test_list = set([])
  4. def add(self, key):
  5. self.test_list.add(key)
  6. def remove(self, key):
  7. if self.contains(key):
  8. self.test_list.remove(key);
  9. def contains(self, key):
  10. return key in self.test_list

bbe4f747b4a2d2ed62d62d382d1ca8b5.png

warning :未经授权,不得转载

有问题的小伙伴请在下方留言,喜欢就点个赞吧;关注我,带你一起写bug

CSDN:带只拖鞋去流浪

简书:带只拖鞋去流浪

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/812186
推荐阅读
相关标签
  

闽ICP备14008679号