개발 일지
705. Design HashSet (HashSet 디자인) 본문
내장된 해시 테이블 라이브러리를 사용하지 않고 해시셋을 설계합니다.
MyHashSet 클래스 구현:
- void add(키) 값 key를 해시셋에 삽입합니다.
- bool contain(key) 해시셋에 값 key가 있는지 여부를 반환합니다.
- void remove(key) 해시셋에서 값 key를 제거합니다. 해시셋에 key가 없는 경우 아무것도 수행하지 않습니다.
예시 1:
입력
["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"]
[[], [1], [2], [1], [3], [2], [2], [2], [2]]
출력
[null, null, null, true, false, null, true, null, false]
설명
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, (찾을 수 없음)
myHashSet.add(2); // set = [1, 2]
myHashSet.contains(2); // return True
myHashSet.remove(2); // set = [1]
myHashSet.contains(2); // return False, (이미 제거됨)
조건:
- 0 <= key <= 10^6
- add, remove 및 contains를 위해 최대 10^4건의 통화가 이루어집니다.
정답:
public class MyHashSet {
bool[] arr;
public MyHashSet() {
arr = new bool[1000001];
}
public void Add(int key) {
arr[key] = true;
}
public void Remove(int key) {
arr[key] = false;
}
public bool Contains(int key) {
return arr[key];
}
}
/**
* Your MyHashSet object will be instantiated and called as such:
* MyHashSet obj = new MyHashSet();
* obj.Add(key);
* obj.Remove(key);
* bool param_3 = obj.Contains(key);
*/
해설: bool 배열을 제작 후 key값의 배열에 add하면 true를 remove하면 false로 변경합니다.
배열을 Contains로 불러온다면 해당 key배열의 값을 그대로 return해줍니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
682. Baseball Game (야구 게임) (3) | 2024.10.31 |
---|---|
709. To Lower Case (소문자로) (0) | 2024.10.31 |
9. Palindrome Number (대칭수) (0) | 2024.10.31 |
965. Univalued Binary Tree (단일값 이진 트리) (0) | 2024.10.31 |
700. Search in a Binary Search Tree (이진 탐색 트리에서의 검색) (0) | 2024.10.29 |