不使用任何內建的哈希表庫設計一個哈希集合java
具體地說,你的設計應該包含如下的功能python
add(value)
:向哈希集合中插入一個值。contains(value)
:返回哈希集合中是否存在這個值。remove(value)
:將給定值從哈希集合中刪除。若是哈希集合中沒有這個值,什麼也不作。Design a HashSet without using any built-in hash table libraries.數組
To be specific, your design should include these functions:bash
add(value)
: Insert a value into the HashSet.contains(value)
: Return whether the value exists in the HashSet or not.remove(value)
: Remove a value in the HashSet. If the value does not exist in the HashSet, do nothing.示例:函數
MyHashSet hashSet = new MyHashSet();
hashSet.add(1);
hashSet.add(2);
hashSet.contains(1); // 返回 true
hashSet.contains(3); // 返回 false (未找到)
hashSet.add(2);
hashSet.contains(2); // 返回 true
hashSet.remove(2);
hashSet.contains(2); // 返回 false (已經被刪除)
複製代碼
注意:ui
[1, 1000000]
的範圍內。[1, 10000]
範圍內。Note:this
[0, 1000000]
.[1, 10000]
. 題目明確限定了數據大小和數據集大小,都在int整型範圍內,因此最簡單的解法就是,以一個長度爲10000001布爾類型 數組,索引位置就是數據值大小。True、False表明哈希集合內是否有該數。這應該是最簡單的哈希散列函數了:y = xspa
Java:設計
class MyHashSet {
private boolean[] hashSet;
/** * Initialize your data structure here. */
public MyHashSet() {
this.hashSet = new boolean[10000001];
}
public void add(int key) {
hashSet[key] = true;
}
public void remove(int key) {
hashSet[key] = false;
}
/** * Returns true if this set contains the specified element */
public boolean contains(int key) {
return hashSet[key];
}
}
複製代碼
Python:code
class MyHashSet:
def __init__(self):
""" Initialize your data structure here. """
self.hash_set = [False]*1000001
def add(self, key: int) -> None:
self.hash_set[key] = True
def remove(self, key: int) -> None:
self.hash_set[key] = False
def contains(self, key: int) -> bool:
""" Returns true if this set contains the specified element """
return self.hash_set[key]
複製代碼
歡迎關注微.信公.衆號:愛寫Bug