코린이의 소소한 공부노트

[LeetCode/Easy] 705. Design HashSet 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 705. Design HashSet

무지맘 2023. 3. 18. 22:57

목표: HashSet과 관련된 메서드를 아무 것도 쓰지 않고 HashSet을 구현하기

- 생성자

- add(), contains(), remove()

 

1. Input

1) add(): HashSet에 추가할 값

2) contains(): HashSet에 있는지 없는지 확인할 값

3) remove(): HashSet에서 제거할 값. 만약 해당 값이 HashSet에 없다면 아무 일도 일어나지 않는다.

 

2. Output

1) contains(): HashSet에 값이 있다면 true, 없다면 false를 반환

 

3. Constraint

1) 0 <= key <= 10^6

2) 메서드 3가지는 최대 10^4번까지 호출된다.

 

4. Example

MyHashSet myHashSet = new MyHashSet();
myHashSet.add(1); 	// set = [1]
myHashSet.add(2); 	// set = [1, 2]
myHashSet.contains(1);	// true
myHashSet.contains(3);	// false
myHashSet.add(2);	// set = [1, 2]
myHashSet.contains(2);	// true
myHashSet.remove(2);	// set = [1]
myHashSet.contains(2);	// false

 

5. Code

1) 첫 코드(2023/03/18)

class MyHashSet {
    List<Integer> list;
    public MyHashSet() {
        list = new ArrayList<Integer>();
    }
    
    public void add(int key) {
        if(!list.contains(key))
            list.add(key);
    }
    
    public void remove(int key) {
        for(int i=0 ; i<list.size() ; i++){
            if(list.get(i)==key){
                list.remove(i);
                break;
            }
        }
    }
    
    public boolean contains(int key) {
        boolean answer = false;
        for(int i=0 ; i<list.size() ; i++){
            if(list.get(i)==key){
                answer = true;
                break;
            }
        }
        return answer;
    }
}