【手把手带你刷Leetcode力扣】7.数据结构 - 集合

Set集合:

无序 不重复

主要作用:

  • 检查某一个元素是否存在
  • 检查是否存在重复元素

set:

  • HashSet
  • LinklistSet
  • TreeSet

时间复杂度

  • 访问Access — X
  • 搜索Search — O(1) — 碰撞情况 — O(k) — k为碰撞元素的个数
  • 插入Insert — O(1) — 碰撞情况 — O(k)
  • 删除Delete — O(1) — 碰撞情况 — O(k)

常用操作

  1. 创建集合
    s = set()

  2. 添加元素
    s.add(10)
    (添加的元素)
    O(1)

  3. 搜索元素
    2 in s
    O(1)

  4. 删除元素
    s.remove(2)
    (删除的元素)
    O(1)

  5. 集合的长度
    len(s)
    O(1)


练习题

  • 217 . 存在重复元素
class Solution:
	# Set Solution
	# Time complexity: O(N)
	# Space complexity: O(N)
	def containsDuplicate(self, nums: List[int]) -> bool:
		if len(nums) == 0:
			return False
		hashset = set(nums)
		return False if len(nums) == len(hashset) else True
  • 705 . 设计哈希集合
class MyHashSet:
	# Array
	# Space Complexity: O(N)
	# Initialize: O(N)
	# Add: O(N)
	# Remove: O(N)
	# Contains: O(N)
	
	def __init__(self):
		"""
		Initialize your data structure here.
		"""
		self.hashset = [0]*1000001
		
	def add(self, key: int) -> None:
		self.hashset[key] = 1
		
	def remove(self, key:int) -> None:
		self.hashset[key] = 0
		
	def contains(self, key:int) -> bool:
		"""
		Returns true if this set contains the specified element.
		"""
		return self.hashset[key]

学习视频来源B站—爱学习的饲养员—手把手带你刷Leetcode力扣

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值