写点什么

【LeetCode】设计哈希集合 Java 题解

用户头像
HQ数字卡
关注
发布于: 2021 年 03 月 13 日

题目

不使用任何内建的哈希表库设计一个哈希集合(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 ,(已移除)


来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/design-hashset


代码

/** * https://leetcode-cn.com/problems/design-hashset/ */class MyHashSet {
boolean[] arr; /** Initialize your data structure here. */ public MyHashSet() { arr = new boolean[1000009]; }
public void add(int key) { arr[key] = true; }
public void remove(int key) { arr[key] = false; }
/** Returns true if this set contains the specified element */ public boolean contains(int key) { return arr[key]; }}
复制代码


总结

  • 今天的题目是一到简单题目,题目提示设计哈希集合,也是说让我们用基本的数据结构,数组,链表等实现。

  • 上述解法是用数组实现的一种取巧的解法,因为测试用例不关心实际存储的值,因此可以采用 boolean 数组的存储直接通过测试。

  • 坚持每日一题,加油!


发布于: 2021 年 03 月 13 日阅读数: 10
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】设计哈希集合Java题解