[LeetCode] Design HashSet

아르당·2026년 2월 18일

LeetCode

목록 보기
157/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

내장된 해시 테이블 라이브러리를 사용하지 않고 HashSet을 설계해라.

MyHashSet 클래스를 구현해라.

  • void add(key)는 HashSet에 값 key를 삽입한다.
  • boolean contains(key)는 HashSet에 key 값이 있는지 없는지 반환한다.
  • void remove(key)는 HashSet에 key 값을 제거한다. 만약 key가 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
  • add, remove, contains는 최대 10^4번 호출한다.

Solved

class MyHashSet {
    private boolean[] storage;

    public MyHashSet() {
        storage = new boolean[1_000_001];
    }
    
    public void add(int key) {
        storage[key] = true;
    }
    
    public void remove(int key) {
        storage[key] = false;
    }
    
    public boolean contains(int key) {
        return storage[key];
    }
}

/**
 * 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);
 */
profile
내 마음대로 코드 작성하는 세상

0개의 댓글