1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| class MyHashSet { private: struct Node{ int val; Node* next; Node(int val):val(val),next(nullptr){} }; public: vector<Node*> arr; const int len=101; MyHashSet() { arr=vector<Node*>(len,new Node(-1));
} void add(int key) { int addr=key%len; Node*temp=arr[addr]; if(temp->val!=-1){ while(temp){ if(temp->val==key)return; if(!(temp->next)){ Node*node=new Node(key); temp->next=node; return; } temp = temp -> next; } }else{ temp->val=key; return; } } void remove(int key) {
int addr=key%len; Node*temp=arr[addr]; if(temp->val!=-1){ while(temp){ if(temp->val==key){ temp->val=-1; return; } temp=temp->next; } } } bool contains(int key) { int addr=key%len; Node* temp=arr[addr]; if(temp->val!=-1){ while(temp){ if(temp->val==key){ return true; } temp=temp->next; } return false; }else{ return false; }
} };
|