数据结构—集合
一:集合
1、特点:元素没有顺序;不重复
2、集合可以用来检擦某个元素是否存在;或者检查是否从在重复的元素
3、常见的操作:
#创建集合
my_set={1,2,3,4,5}
#添加元素
my_set.add(6)
#访问元素(集合是无序的;不能通过下标索引访问元素;只能通过遍历访问元素)
for i in my_set:
print(i)
#删除元素
my_set.remove(5)
my_set.add(9)#等价与将5修改为9
#查找元素
if 3 in my_set:
print("yes")
#集合的长度
length=len(my_set)
print(length)
#集合的排序
sorted_set = sorted(my_set)
print(f"Sorted set: {sorted_set}")
二:刷题
217 存在重复元素
(1)思路1:使用hash表;判断当前元素是否在新的容器当中;如果在的话返回True;否则将当前元素加入到新的容器当中;进行下一轮判断;当数组种的元素都遍历完了之后还没有符合条件就返回False
(2)思路2:利用集合的特点直接一步解决
class Solution:
def func(self,nums):
nums_set=set(nums)
return len(nums_set)!=len(nums)
nums = [1,2,3]
solution=Solution()
result=solution.func(nums)
print(result)
**705 构建哈希集合 **
class MyHashSet:
def __init__(self):
# 初始化一个大小为 10^6 + 1 的布尔数组
self.size = 10**6 + 1
self.data = [False] * self.size
def add(self, key: int) -> None:
# 将对应索引位置设为 True,表示 key 存在于集合中
self.data[key] = True
def contains(self, key: int) -> bool:
# 返回对应索引位置的布尔值,表示集合中是否存在 key
return self.data[key]
def remove(self, key: int) -> None:
# 将对应索引位置设为 False,表示从集合中移除 key
self.data[key] = False
作者:
Shu-How Z
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。