c++简单实现
class MyHashSet {
public:
constexpr static int hash_d = 9209;
vector<vector<int>> value;
/** Initialize your data structure here. */
MyHashSet() :value(hash_d){}
int get_haser(int key){
return key % hash_d;
}
void add(int key) {
int hash_key = get_haser(key);
if(value[hash_key].empty()){
value[hash_key].push_back(key);
}
else{
for(auto it = value[hash_key].begin();it != value[hash_key].end();++it){
if(*it == key){
return;
}
}
value[hash_key].push_back(key);
}
}
void remove(int key) {
int hash_key = get_haser(key);
for(auto it = value[hash_key].begin();it != value[hash_key].end();++it){
if(*it == key){
value[hash_key].erase(it);
return;
}
}
}
/** Returns true if this set contains the specified element */
bool contains(int key) {
int hash_key = get_haser(key);
for(auto it = value[hash_key].begin();it != value[hash_key].end();++it){
if(*it == key) return true;
}
return false;
}
};
/**
* 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);
*/
python3简单实现
class MyHashSet:
def __init__(self):
"""
Initialize your data structure here.
"""
self.size = 9209
self.dict = {i:[] for i in range(9209)}
def get_hasher(self,key:int) -> int:
return key % self.size
def add(self, key: int) -> None:
k = self.get_hasher(key)
if self.dict[k].count(key) == 0:
self.dict[k].append(key)
else:
return
def remove(self, key: int) -> None:
k = self.get_hasher(key)
for i in range(self.dict[k].count(key)):
self.dict[k].remove(key)
def contains(self, key: int) -> bool:
"""
Returns true if this set contains the specified element
"""
k = self.get_hasher(key)
if self.dict[k].count(key) >= 1:
return True
else :
return False
# Your MyHashSet object will be instantiated and called as such:
# obj = MyHashSet()
# obj.add(key)
# obj.remove(key)
# param_3 = obj.contains(key)
用哈希集合实现查重
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> myset;
for(int i : nums){
if(myset.count(i) <= 0){
myset.insert(i);
}
else{
return true;
}
}
return false;
}
};