Set集合:
无序 不重复
主要作用:
- 检查某一个元素是否存在
- 检查是否存在重复元素
set:
- HashSet
- LinklistSet
- TreeSet
时间复杂度
- 访问Access — X
- 搜索Search — O(1) — 碰撞情况 — O(k) — k为碰撞元素的个数
- 插入Insert — O(1) — 碰撞情况 — O(k)
- 删除Delete — O(1) — 碰撞情况 — O(k)
常用操作
-
创建集合
s = set()
– -
添加元素
s.add(10)
(添加的元素)
O(1)
– -
搜索元素
2 in s
O(1)
– -
删除元素
s.remove(2)
(删除的元素)
O(1)
– -
集合的长度
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力扣