Skip to content

Commit 50c05df

Browse files
Merge pull request #3160 from DaltonVislisel/main
Added 0706-design-hashmap.cs
2 parents 78754e2 + 1f653e9 commit 50c05df

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

csharp/0706-design-hashmap.cs

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
public class MyHashMap
2+
{
3+
private class LinkedListNode
4+
{
5+
public LinkedListNode(int key, int val, LinkedListNode next)
6+
{
7+
this.Key = key;
8+
this.Val = val;
9+
this.Next = next;
10+
}
11+
12+
public int Key { get; set; }
13+
public int Val { get; set; }
14+
public LinkedListNode Next { get; set; }
15+
}
16+
17+
public MyHashMap()
18+
{
19+
Map = new LinkedListNode[10000];
20+
}
21+
22+
public int Hash(int key)
23+
{
24+
return key % Map.Length;
25+
}
26+
27+
public void Put(int key, int value)
28+
{
29+
int index = Hash(key);
30+
if (Map[index] == null)
31+
Map[index] = new LinkedListNode(key, value, null);
32+
else
33+
{
34+
LinkedListNode node = Map[index];
35+
while (true)
36+
{
37+
if (node.Key == key)
38+
{
39+
node.Val = value;
40+
return;
41+
}
42+
if (node.Next == null)
43+
break;
44+
else
45+
node = node.Next;
46+
}
47+
node.Next = new LinkedListNode(key, value, null);
48+
}
49+
}
50+
51+
public int Get(int key)
52+
{
53+
int index = Hash(key);
54+
LinkedListNode node = Map[index];
55+
if (node != null)
56+
{
57+
while (true)
58+
{
59+
if (node.Key == key)
60+
return node.Val;
61+
62+
if (node.Next == null)
63+
break;
64+
else
65+
node = node.Next;
66+
}
67+
}
68+
69+
return -1;
70+
}
71+
72+
public void Remove(int key)
73+
{
74+
int index = Hash(key);
75+
LinkedListNode node = Map[index];
76+
if (node == null)
77+
return;
78+
if (node.Key == key)
79+
{
80+
Map[index] = node.Next;
81+
node = null;
82+
return;
83+
}
84+
while (node.Next != null)
85+
{
86+
if (node.Next.Key == key)
87+
{
88+
node.Next = node.Next.Next;
89+
return;
90+
}
91+
92+
node = node.Next;
93+
}
94+
}
95+
96+
private LinkedListNode[] Map { get; set; }
97+
}

0 commit comments

Comments
 (0)