设计一个HashSet,有add, contains, remove功能。
思路:
正常的HashSet, 通过一个hash函数来计算key的hash值,把key放到数组中hash值对应的位置。
遇到hash值冲突时去找下一个空的位置。
而这里因为key的值是有限的,可以简化为hash(key) = key。
只需用 1 代表有这个值,0代表没有。
用char数组节省一点内存空间。
class MyHashSet {
char[] keys = new char[1000001];
public MyHashSet() {
}
public void add(int key) {
keys[key] = 1;
}
public void remove(int key) {
keys[key] = 0;
}
public boolean contains(int key) {
return keys[key]==1;
}
}