705.Design Hashset
705.Design Hashset
难度:Easy
不使用任何内建的哈希表库设计一个哈希集合
具体地说,你的设计应该包含以下的功能
add(value):向哈希集合中插入一个值。 contains(value) :返回哈希集合中是否存在这个值。 remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。
1
示例:
2
3
MyHashSet hashSet = new MyHashSet();
4
hashSet.add(1);
5
hashSet.add(2);
6
hashSet.contains(1); // 返回 true
7
hashSet.contains(3); // 返回 false (未找到)
8
hashSet.add(2);
9
hashSet.contains(2); // 返回 true
10
hashSet.remove(2);
11
hashSet.contains(2); // 返回 false (已经被删除)
Copied!
注意:
所有的值都在 [1, 1000000]的范围内。 操作的总数目在[1, 10000]范围内。 不要使用内建的哈希集合库。
直接使用数组索引完成。
1
class MyHashSet {
2
private:
3
bool hset[1000001]={false};
4
public:
5
/** Initialize your data structure here. */
6
MyHashSet() {
7
8
}
9
10
void add(int key) {
11
hset[key]=1;
12
}
13
14
void remove(int key) {
15
hset[key]=0;
16
}
17
18
/** Returns true if this set contains the specified element */
19
bool contains(int key) {
20
return hset[key];
21
}
22
};
23
24
/**
25
* Your MyHashSet object will be instantiated and called as such:
26
* MyHashSet* obj = new MyHashSet();
27
* obj->add(key);
28
* obj->remove(key);
29
* bool param_3 = obj->contains(key);
30
*/
Copied!
执行用时 : 212 ms, 在Design HashSet的C++提交中击败了61.47% 的用户 内存消耗 : 66.6 MB, 在Design HashSet的C++提交中击败了31.36% 的用户
Copy link