python - 改进 Python 中的 HashSet 设计
问题描述
在这里学习!
我已经设法将这个解决方案汇集到一个关于 Leetcode 的问题中!以下是此解决方案的统计数据:运行时间:1236 毫秒,比 Python3 在线提交的 Design HashSet 内存使用量快 17.28%:18.7 MB,少于 Python3 在线提交的 Design HashSet 的 83.53%。
现在 - 我希望 Leetcode 能够展示一个理想或最佳实践的解决方案,这样我就可以与我的比较和学习!但他们没有!
所以,如果你们中的任何人可以在这里,将不胜感激!(批评并展示您的最佳实践解决方案)
我的解决方案
class MyHashSet:
def __init__(self):
"""
Initialize your data structure here.
"""
self.TheSet = []
def add(self, key: int) -> None:
if self.contains(key):
pass
else:
if key >= 0 and key <= 10**6:
self.TheSet.append(key)
else:
pass
def remove(self, key: int) -> None:
if self.contains(key):
self.TheSet.remove(key)
else:
pass
def contains(self, key: int) -> bool:
if key in self.TheSet:
return True
else:
return False
# Your MyHashSet object will be instantiated and called as such:
# obj = MyHashSet()
# obj.add(key)
# obj.remove(key)
# param_3 = obj.contains(key)```
解决方案
我找到了挑战并玩了一点。我想问题是你没有使用 HashSet 的基本概念,这将在你在 LeetCode 上尝试的挑战中解释。这也是一个问题,他们解释了 HashMap 的作用。会检查出来!
我还根据this answer为您制定了解决方案。它的运行时间优于 80%,内存使用率优于 90%。显然,这可以进一步改进,但我认为它包含了基本概念。
class MyHashSet:
def __init__(self):
self.contents = [None] * 1_000
def hash(self, x):
return x % (2 ** 61 - 1)
def add(self, key:int) -> None:
key_hash = self.hash(key) % 1_000
bucket = self.contents[key_hash]
if bucket is None:
self.contents[key_hash] = [key]
elif key not in bucket:
bucket.append(key)
return None
def remove(self, key: int) -> None:
key_hash = self.hash(key) % 1_000
bucket = self.contents[key_hash]
if bucket is not None:
if key in bucket:
bucket.remove(key)
else:
pass
def contains(self, key: int) -> bool:
key_hash = self.hash(key) % 1_000
bucket = self.contents[key_hash]
if bucket is not None:
if key in bucket:
return True
else:
return False
else:
return False
推荐阅读
- powershell - 仅在 PowerShell 电子邮件中附加最近的文件
- gradle - 使用特定配置运行插件任务
- canvas - 将 THREE.CanvasTexture 与 WebGL 绘制的画布一起使用
- c - 次和 CLOCK_PER_SEC 计算错误的时间
- asp.net-core - 在 Web Api 中返回 json 对象的动态列表
- python - 尝试创建子图但不断收到 ValueError 消息
- sql - 具有嵌套数据的行的 Big Query 重复数据删除
- firebase - 为什么 Google Analytics Firebase 从不显示自定义事件的参数?
- python - 在python中比较字符串的嵌套列表理解理解
- reactjs - 有没有办法只制作 wordpress 标题字段文本或在 React 中解析它?