Leetcode Java Design HashMap
업데이트:
문제
코드
class MyHashMap {
private int[] map;
public MyHashMap() {
this.map = new int[10];
}
public void put(int key, int value) {
if (key >= this.map.length) {
this.map = Arrays.copyOf(this.map, key + 1);
}
this.map[key] = value == 0 ? -1 : value;
}
public int get(int key) {
if (key >= this.map.length || this.map[key] == 0) {
return -1;
} else {
return this.map[key] == -1 ? 0 : this.map[key];
}
}
public void remove(int key) {
if (key < this.map.length) {
this.map[key] = 0;
}
}
}
/**
* Your MyHashMap object will be instantiated and called as such:
* MyHashMap obj = new MyHashMap();
* obj.put(key,value);
* int param_2 = obj.get(key);
* obj.remove(key);
*/
결과
설명
- HashMap과 동일한 기능인 MyHashMap을 구현하는 문제이다.
- 생성자인 MyHashMap()은 객체를 초기화한다.
- 메서드인 put(int key, int value)은 HashMap 내 key의 값에 value를 저장한다. 단, 동일한 key에 값이 존재한다면 value로 값을 바꾸어준다.
- 메서드인 get(key)는 HashMap 내 key의 값을 반환한다.
- 메서드인 remove(key)는 HashMap 내 key의 값을 제거한다.
- 문제 풀이에 필요한 변수를 정의한다.
- map은 key번째 value를 저장하기 위한 배열이다.
- 생성자인 MyHashSet()을 완성한다.
- map을 임시로 10 크기의 배열로 초기화한다.
- 메서드인 put(int key, int value)을 완성한다.
- map의 길이보다 key가 더 크거나 같은 경우, map의 크기를 key가 들어갈 수 있도록 $key + 1$ 크기로 확장한다.
- map의 key번째 자리의 값에 value가 0인 경우 -1을 넣어 0이 들어간 것을 표시해주고, 아니면 value를 그대로 넣어준다.
- 메서드인 get(key)를 완성한다.
- map의 길이보다 key가 더 크거나 같거나 map의 key번째 자리의 값이 0인 경우, 값이 존재하지 않으므로 -1을 반환한다.
- 위의 경우가 아니라면 map의 key번째 자리가 -1인 경우 0을 추가한 경우이므로 0을, 아니면 해당 값 그대로 반환한다.
- 메서드인 remove(key)를 완성한다.
- map의 길이가 key보다 큰 경우, key의 값을 0을 넣어 초기화한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기