The number of operations will be in the range of [1, 10000].
Please do not use the built-in HashSet library.
Solution
classMyHashSet {privatefinalint MAX_LEN =100000; // the amount of bucketsprivateList<Integer>[] set; // hash set implemented by array /** Returns the corresponding bucket index. */privateintgetIndex(int key) {return key % MAX_LEN; } /** Search the key in a specific bucket. Returns -1 if the key does not existed. */privateintgetPos(int key,int index) {// Each bucket contains a list.List<Integer> temp = set[index];if (temp ==null) {return-1; }// Iterate all the elements in the bucket to find the target key.for (int i =0; i <temp.size(); ++i) {if (temp.get(i) == key) {return i; } }return-1; } /** Initialize your data structure here. */publicMyHashSet() { set = (List<Integer>[])newArrayList[MAX_LEN]; }publicvoidadd(int key) {int index =getIndex(key);int pos =getPos(key, index);if (pos <0) {// Add new key if key does not exist.if (set[index] ==null) { set[index] =newArrayList<Integer>(); } set[index].add(key); } }publicvoidremove(int key) {int index =getIndex(key);int pos =getPos(key, index);if (pos >=0) {// Remove the key if key exists. set[index].remove(pos); } } /** Returns true if this set did not already contain the specified element */publicbooleancontains(int key) {int index =getIndex(key);int pos =getPos(key, index);return pos >=0; }}/** * Your MyHashSet object will be instantiated and called as such: * MyHashSet obj = new MyHashSet(); * obj.add(key); * obj.remove(key); * boolean param_3 = obj.contains(key); */