오늘의 문제 >> https://leetcode.com/problems/design-hashmap/description/
[ 생각 흐름 ]
배열을 미리 만들어두고 배열의 index를 key값으로 사용하면 될 듯?
[ JAVA ]
class MyHashMap {
int map[];
public MyHashMap() {
map = new int[1000001];
Arrays.fill(map, -1);
}
public void put(int key, int value) {
map[key] = value;
}
public int get(int key) {
return map[key];
}
public void remove(int key) {
map[key] = -1;
}
}
이렇게 구현하면 간단하게 성공인데..!
사실 찐으로 만들려면 링크드리스트를 써야 되는 것 같다
[ Java ]
import java.util.*;
class MyHashMap {
private final int SIZE = 1000; // 배열의 크기 (버킷 수)
private List<Node>[] map;
public MyHashMap() {
map = new List[SIZE];
for (int i = 0; i < SIZE; i++) {
map[i] = new LinkedList<>(); // 각 칸에 연결 리스트를 초기화
}
}
public void put(int key, int value) {
int index = key % SIZE; // 해시 함수
for (Node node : map[index]) {
if (node.key == key) {
node.value = value; // 이미 존재하면 업데이트
return;
}
}
map[index].add(new Node(key, value)); // 없으면 추가
}
public int get(int key) {
int index = key % SIZE;
for (Node node : map[index]) {
if (node.key == key) return node.value;
}
return -1; // 없으면 -1
}
public void remove(int key) {
int index = key % SIZE;
Iterator<Node> iter = map[index].iterator();
while (iter.hasNext()) {
Node node = iter.next();
if (node.key == key) {
iter.remove();
return;
}
}
}
}
'TIL🔥 > 코딩테스트' 카테고리의 다른 글
[항해99클럽] Java 비기너_Day 11 Repeated DNA Sequences (0) | 2025.04.14 |
---|---|
[항해99클럽] Java 비기너_Day 10 평행선 (1) | 2025.04.13 |
[항해99클럽] Java 비기너_Day 8 Check if Number Has Equal Digit Count and Digit Value (0) | 2025.04.09 |
[항해99클럽] Java 비기너_Day 7 좋은 단어 (0) | 2025.04.08 |
[항해99클럽] Java 비기너_Day 6 Climbing Stairs (0) | 2025.04.07 |
댓글