トピック:
ハッシュセットライブラリーの設計に組み込まれ、任意のハッシュテーブルを使用しないでください
具体的には、あなたのデザインには、以下の機能が含まれている必要があり
add(value)
:ハッシュセットに値を挿入します。contains(value)
:このハッシュコレクションの存在の値を返します。remove(value)
:与えられたハッシュ値をコレクションから削除されます。ハッシュ値が設定されていない場合、何もしません。
任意の組み込みのハッシュテーブルのライブラリを使用せずに、HashSetのを設計します。
具体的には、あなたのデザインは、これらの機能を含める必要があります。
add(value)
:HashSetのに値を挿入します。contains(value)
:値はHashSetの中に存在するかどうかを返します。remove(value)
:HashSetの中で値を削除します。値がHashSetの中に存在しない場合は、何もしません。
例:
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 (已经被删除)
注意:
- すべての値がある
[1, 1000000]
範囲内。 - 操作の総数
[1, 10000]
範囲。 - 内蔵されたハッシュセットのライブラリを使用しないでください。
注意:
- すべての値の範囲になります
[0, 1000000]
。 - 操作の数は、の範囲であろう
[1, 10000]
。 - 内蔵のHashSetのライブラリを使用しないでください。
問題解決のアイデア:
タイトル明らかデータサイズとデータセットのサイズを定義して、範囲INTの整数であり、最も簡単な解決策は、長さ10000001ブール配列であるので、インデックス位置は、データ値のサイズです。確かに、ハッシュセットにおける代表者の数があるかどうかはFalse。これは、ハッシュ関数の最も簡単なハッシュである必要があります。y = X
コード:
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の:
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]
マイクロチャンネル公衆番号へようこそ注意:愛のバグを書きます