Leetcode Java Design HashSet
업데이트:
문제
코드
class MyHashSet {
private boolean[] set;
public MyHashSet() {
this.set = new boolean[10];
}
public void add(int key) {
if (key >= this.set.length) {
this.set = Arrays.copyOf(this.set, key + 1);
}
this.set[key] = true;
}
public boolean contains(int key) {
if (key >= this.set.length) {
return false;
} else {
return this.set[key];
}
}
public void remove(int key) {
if (key < this.set.length) {
this.set[key] = false;
}
}
}
/**
* 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);
*/
결과
설명
- HashSet과 동일한 기능인 MyHashSet을 구현하는 문제이다.
- 생성자인 MyHashSet()은 객체를 초기화한다.
- 메서드인 add(key)는 HashSet 내 key를 저장한다.
- 메서드인 contains(key)는 HashSet 내 key가 있는지 검증 결과를 반환한다.
- 메서드인 remove(key)는 HashSet 내 key를 제거한다.
- 문제 풀이에 필요한 변수를 정의한다.
- set은 key가 추가되었는지 검증하기 위한 배열이다.
- 생성자인 MyHashSet()을 완성한다.
- set을 임시로 10 크기의 배열로 초기화한다.
- 메서드인 add(key)를 완성한다.
- set의 길이보다 key가 더 크거나 같은 경우, set의 크기를 key가 들어갈 수 있도록 $key + 1$ 크기로 확장한다.
- key의 값이 포함되었다는 의미로 set의 key번째 자리의 값을 true로 바꾸어준다.
- 메서드인 contains(key)를 완성한다.
- set의 길이보다 key가 더 크거나 같은 경우, set의 key번째 자리 결과를 반환한다.
- 위의 경우가 아니라면 해당 값이 추가된 적이 없으므로, false를 반환한다.
- 메서드인 remove(key)를 완성한다.
- set의 길이가 key보다 큰 경우, key의 값을 제거한다는 의미로 set의 key번째 위치의 값을 false로 바꾸어준다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기