705.设计哈希集合
【LetMeFly】705.设计哈希集合:很多人都是这样做的吧【逃】
力扣题目链接:https://leetcode.cn/problems/design-hashset/
不使用任何内建的哈希表库设计一个哈希集合(HashSet)。
实现 MyHashSet
类:
void add(key)
向哈希集合中插入值key
。bool contains(key)
返回哈希集合中是否存在这个值key
。void remove(key)
将给定值key
从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。
示例:
输入: ["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"] [[], [1], [2], [1], [3], [2], [2], [2], [2]] 输出: [null, null, null, true, false, null, true, null, false] 解释: MyHashSet myHashSet = new MyHashSet(); myHashSet.add(1); // set = [1] myHashSet.add(2); // set = [1, 2] myHashSet.contains(1); // 返回 True myHashSet.contains(3); // 返回 False ,(未找到) myHashSet.add(2); // set = [1, 2] myHashSet.contains(2); // 返回 True myHashSet.remove(2); // set = [1] myHashSet.contains(2); // 返回 False ,(已移除)
提示:
0 <= key <= 106
- 最多调用
104
次add
、remove
和contains
解题方法:只要数组足够大,就不会冲突
Easy题就按Easy的方法做好了。注意到这题数据范围是$0\leq key \leq 10^6$,因此只需要开辟一个大小为$10^6+1$的布尔类型的数组$hashset$:
- $add$操作时将$hashset[key]$设置为$true$
- $remove$操作时将$hashset[key]$设置为$false$
- $contains$操作时返回$hashset[key]$的值
以上。
- 时间复杂度:初始化$O(C)$,单次操作$O(1)$
- 空间复杂度:初始化$O(C)$,单次操作$O(1)$
AC代码
C++
1 |
|
Python
1 |
|
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/137738309
705.设计哈希集合
https://blog.letmefly.xyz/2024/04/14/LeetCode 0705.设计哈希集合/