返回
哈希表难题重现江湖:头条前端进阶算法 8
前端
2024-02-03 05:22:42
哈希表是一种非常有效的数据结构,在很多领域都有着广泛的应用,例如在数据库、缓存和编译器中。哈希表与数组不同,数组中的数据是顺序存储的,而哈希表中的数据是通过哈希函数映射到不同的位置存储的。这使得哈希表可以非常快速地查找和插入数据,时间复杂度为O(1),而数组查找和插入数据的时间复杂度为O(n)。
头条前端进阶算法8中,给出了一个哈希表问题。该问题要求您实现一个哈希表,并支持以下操作:
- 插入一个键值对
- 删除一个键值对
- 查找一个键值对
- 返回哈希表中所有的键值对
您需要使用Python语言实现该哈希表。
class HashTable:
def __init__(self):
self.table = [[] for _ in range(1000)]
def insert(self, key, value):
hash_key = hash(key) % len(self.table)
self.table[hash_key].append((key, value))
def delete(self, key):
hash_key = hash(key) % len(self.table)
for i, (k, v) in enumerate(self.table[hash_key]):
if k == key:
del self.table[hash_key][i]
return
def find(self, key):
hash_key = hash(key) % len(self.table)
for k, v in self.table[hash_key]:
if k == key:
return v
return None
def items(self):
for bucket in self.table:
for key, value in bucket:
yield key, value
if __name__ == "__main__":
hash_table = HashTable()
hash_table.insert("name", "John")
hash_table.insert("age", 20)
hash_table.insert("city", "New York")
print(hash_table.find("name")) # John
print(hash_table.find("age")) # 20
print(hash_table.find("city")) # New York
hash_table.delete("age")
print(hash_table.find("age")) # None
for key, value in hash_table.items():
print(key, value)
除了哈希表,数据结构还包括链表、栈、队列、树、图等。每种数据结构都有其独特的性质和应用场景。作为一名程序员,掌握各种数据结构并熟练应用它们,对提升编程能力至关重要。