Design a HashSet without using any built-in hash table libraries.
Implement MyHashSet class:
- void add(key) Inserts the value key into the HashSet.
- bool contains(key) Returns whether the value key exists in the HashSet or not.
- void remove(key) Removes the value key in the HashSet. If key does not exist in the HashSet, do nothing.
내장된 해시 테이블 라이브러리를 사용하지 않고 HashSet을 디자인합니다.
MyHashSet 클래스 구현:
- void add(key) HashSet에 value 키를 삽입합니다.
- bool contains(key) HashSet에 value 키가 있는지 여부를 반환합니다.
- void remove(key) HashSet에서 value 키를 제거합니다. 키가 HashSet에 없으면 아무것도 하지 않습니다.
Example 1:
Input
["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"]
[[], [1], [2], [1], [3], [2], [2], [2], [2]]
Output
[null, null, null, true, false, null, true, null, false]
Explanation
MyHashSet myHashSet = new MyHashSet();
myHashSet.add(1); // set = [1]
myHashSet.add(2); // set = [1, 2]
myHashSet.contains(1); // return True
myHashSet.contains(3); // return False, (not found)
myHashSet.add(2); // set = [1, 2]
myHashSet.contains(2); // return True
myHashSet.remove(2); // set = [1]
myHashSet.contains(2); // return False, (already removed)
Constraints:
- 0 <= key <= 10^6
- At most 104 calls will be made to add, remove, and contains.
코드
class MyHashSet() {
class ListNode(val value: Int = -1) {
var next: ListNode? = null
}
val set = Array(10000) { ListNode() }
fun add(key: Int) {
var cur = set[key % set.size]
while (cur.next != null) {
if (cur.next?.value == key) {
return
}
cur = cur.next!!
}
cur.next = ListNode(key)
}
fun remove(key: Int) {
var cur = set[key % set.size]
while (cur.next != null) {
if (cur.next?.value == key) {
cur.next = cur.next?.next
return
}
cur = cur.next!!
}
}
fun contains(key: Int): Boolean {
var cur = set[key % set.size]
while (cur.next != null) {
if (cur.next?.value == key) {
return true
}
cur = cur.next!!
}
return false
}
}
'LeetCode > Array & Hashing' 카테고리의 다른 글
[LeetCode][Kotlin] 706. Design HashMap (0) | 2024.08.16 |
---|---|
[LeetCode][Kotlin] 448. Find All Numbers Disappeared in an Array (0) | 2024.08.16 |
[LeetCode][Kotlin] 496. Next Greater Element I (0) | 2024.08.14 |