Leetcode 705设计哈希集合

Leetcode 705设计哈希集合

参考链接在时间空间上做权衡
学习上面链接大佬的,如果你刷到了这篇博客,可以直接点上面链接看大佬的题解,太优秀了,我也是搬过来学习的

超大数组

class MyHashSet:
	def __init__(self):
		self.set = [False]*1000001
	def add(self,key):
		self.set[key] = True
	def remove(self,key):
		self.set[key] = False
	def contains(self,key):
		self.set[key]

拉链法

定长拉链法

class MyHashSet:
	def __init__(self):
		self.buckets = 1000
		self.itemsPerBucket = 1001
		self.table = [[] for _ in range(self.buckets)]
	def hash(self,key):
		return key % self.buckets
	def pos(self,key):
		return key // self.buckets
	def add(self,key):
		hashkey = self.hash(key)
		if not self.table[hashkey]:
			self.table[hashkey] = [0]*self.itemsPerBucket
		self.table[hashkey][set.pos(key)] = 1
	def remove(self,key):
		hashkey = self.hash(key)
		if self.table[hashkey]:
			self.table[hashkey][self.pos(key)] = 0
	def contains(self,key):
		hashkey = self.hash(key)
		return (self.table[hashkey] !=[]) and (self.table[hashkey][self.pos(key)]==1)

不定长数组

class MyHashSet:

    def __init__(self):
        self.buckets = 1009
        self.table = [[] for _ in range(self.buckets)]

    def hash(self, key):
        return key % self.buckets
    
    def add(self, key):
        hashkey = self.hash(key)
        if key in self.table[hashkey]:
            return
        self.table[hashkey].append(key)
        
    def remove(self, key):
        hashkey = self.hash(key)
        if key not in self.table[hashkey]:
            return
        self.table[hashkey].remove(key)

    def contains(self, key):
        hashkey = self.hash(key)
        return key in self.table[hashkey]


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值