File tree Expand file tree Collapse file tree 1 file changed +88
-0
lines changed Expand file tree Collapse file tree 1 file changed +88
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments