Skip to content

Commit 2a04d94

Browse files
authored
4 october 2023
1 parent 88d0278 commit 2a04d94

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

706. Design HashMap

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
Runtime 13 ms
2+
Beats 99.63%
3+
4+
5+
Memory 45.6 MB
6+
Beats 98.5%
7+
8+
9+
class MyHashMap {
10+
11+
HashNode[] hashNode = new HashNode[10000];
12+
public MyHashMap() {
13+
14+
}
15+
16+
public void put(int key, int value) {
17+
int idx = getHashKey(key);
18+
if(hashNode[idx] == null){
19+
hashNode[idx] = new HashNode(key, value);
20+
}else{
21+
HashNode node = hashNode[idx];
22+
HashNode prev = null;
23+
while(node != null && node.key != key){
24+
prev = node;
25+
node = node.next;
26+
}
27+
28+
if(node == null){
29+
node = new HashNode(key, value);
30+
if(prev != null){
31+
prev.next = node;
32+
}
33+
}
34+
node.val = value;
35+
}
36+
}
37+
38+
public int get(int key) {
39+
int idx = getHashKey(key);
40+
if(hashNode[idx] == null){
41+
return -1;
42+
}else{
43+
HashNode node = hashNode[idx];
44+
while(node != null){
45+
if(node.key == key){
46+
return node.val;
47+
}
48+
node = node.next;
49+
}
50+
}
51+
return -1;
52+
}
53+
54+
public void remove(int key) {
55+
int idx = getHashKey(key);
56+
if(hashNode[idx] == null){
57+
return;
58+
}else{
59+
if(hashNode[idx].key == key){
60+
hashNode[idx] = hashNode[idx].next;
61+
}else{
62+
HashNode node = hashNode[idx];
63+
while(node != null && node.next != null){
64+
if(node.next.key == key){
65+
node.next = node.next.next;
66+
}
67+
node = node.next;
68+
}
69+
}
70+
}
71+
}
72+
73+
public int getHashKey(int key){
74+
return key % 10000;
75+
}
76+
77+
static class HashNode{
78+
int key;
79+
int val;
80+
HashNode next;
81+
82+
public HashNode(int key, int val){
83+
this.key = key;
84+
this.val = val;
85+
}
86+
}
87+
88+
}

0 commit comments

Comments
 (0)