具体思路:
不能用传统的开数组,应该类似于Hash函数桶映射得方法,进行相关的操作;
简而言之设置取模来当作Hash函数,之后放进一个桶里,进行相应的操作;
具体代码:
class MyHashSet {
public:
MyHashSet() {
vec.resize(maxn);
}
void add(int key) {
int index=hash(key);
for(int i=0;i<vec[index].size();i++){
if(vec[index][i]==key){
return;
}
}
vec[index].push_back(key);
}
void remove(int key) {
int index=hash(key);
for(int i=0;i<vec[index].size();i++){
if(vec[index][i]==key){
vec[index].erase(vec[index].begin()+i);
return;
}
}
return;
}
bool contains(int key) {
int index=hash(key);
for(int i=0;i<vec[index].size();i++){
if(vec[index][i]==key){
return true;
}
}
return false;
}
int hash(int key){
return key%maxn;
}
private:
int maxn=769;
vector<vector<int>>vec;
};
/**
* Your MyHashSet object will be instantiated and called as such:
* MyHashSet* obj = new MyHashSet();
* obj->add(key);
* obj->remove(key);
* bool param_3 = obj->contains(key);
*/