Skip to content

Commit 4133031

Browse files
solves design hash set
1 parent fdcfb07 commit 4133031

File tree

3 files changed

+97
-4
lines changed

3 files changed

+97
-4
lines changed

Diff for: README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# LeetCode Algorithms
22

3-
![problems-solved](https://img.shields.io/badge/Problems%20Solved-172/2081-1f425f.svg)
4-
![problems-solved-java](https://img.shields.io/badge/Java-172/2081-1abc9c.svg)
5-
![problems-solved-python](https://img.shields.io/badge/Python-172/2081-1abc9c.svg)
3+
![problems-solved](https://img.shields.io/badge/Problems%20Solved-173/2081-1f425f.svg)
4+
![problems-solved-java](https://img.shields.io/badge/Java-173/2081-1abc9c.svg)
5+
![problems-solved-python](https://img.shields.io/badge/Python-173/2081-1abc9c.svg)
66
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
77
[![cp](https://img.shields.io/badge/also%20see-Competitve%20Programming-1f72ff.svg)](https://github.com/anishLearnsToCode/competitive-programming)
88

@@ -193,7 +193,7 @@
193193
| 700 | [Search in a Binary Search Tree](https://leetcode.com/problems/search-in-a-binary-search-tree) | [![Java](assets/java.png)](src/SearchInBinarySearchTree.java) [![Python](assets/python.png)](python/search_in_binary_search_tree.py) |
194194
| 703 | [Kth Largest Element in a Stream](https://leetcode.com/problems/kth-largest-element-in-a-stream) | [![Java](assets/java.png)](src/KthLargestElementInAStream.java) [![Python](assets/python.png)](python/k_th_largest_element_in_a_stream.py) |
195195
| 704 | [Binary Search](https://leetcode.com/problems/binary-search) | [![Java](assets/java.png)](src/BinarySearch.java) [![Python](assets/python.png)](python/binary_search.py) |
196-
| 705 | [Design HashSet](https://leetcode.com/problems/design-hashset) | |
196+
| 705 | [Design HashSet](https://leetcode.com/problems/design-hashset) | [![Java](assets/java.png)](src/DesignHashSet.java) [![Python](assets/python.png)](python/design_hash_set.py) |
197197
| 706 | [Design HashMap](https://leetcode.com/problems/design-hashmap) | |
198198
| 709 | [To Lower Case](https://leetcode.com/problems/to-lower-case) | |
199199
| 716 | [Max Stack](https://leetcode.com/problems/max-stack) | |

Diff for: python/design_hash_set.py

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Bucket:
2+
def __init__(self):
3+
self.list = []
4+
5+
def contains(self, element: int) -> bool:
6+
return element in self.list
7+
8+
def add(self, element: int) -> None:
9+
self.list.append(element)
10+
11+
def remove(self, element: int) -> None:
12+
if self.contains(element):
13+
self.list.remove(element)
14+
15+
16+
class MyHashSet:
17+
def __init__(self):
18+
self._initial_size = 100
19+
self.size = 0
20+
self.buckets = [Bucket() for _ in range(self._initial_size)]
21+
22+
def add(self, key: int) -> None:
23+
hashCode = key % len(self.buckets)
24+
if not self.buckets[hashCode].contains(key):
25+
self.buckets[hashCode].add(key)
26+
self.size += 1
27+
28+
def remove(self, key: int) -> None:
29+
self.buckets[key % len(self.buckets)].remove(key)
30+
31+
def contains(self, key: int) -> bool:
32+
return self.buckets[key % len(self.buckets)].contains(key)

Diff for: src/DesignHashSet.java

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import java.util.LinkedList;
2+
import java.util.Queue;
3+
4+
public class DesignHashSet {
5+
class MyHashSet {
6+
7+
private static final int INITIAL_SIZE = 100;
8+
private final Bucket[] buckets;
9+
private int size = 0;
10+
11+
public MyHashSet() {
12+
this.buckets = new Bucket[INITIAL_SIZE];
13+
initializeBuckets();
14+
}
15+
16+
public MyHashSet(int initialSize) {
17+
this.buckets = new Bucket[initialSize];
18+
initializeBuckets();
19+
}
20+
21+
public void add(int element) {
22+
int hash = element % buckets.length;
23+
if (!buckets[hash].contains(element)) {
24+
buckets[hash].add(element);
25+
this.size++;
26+
}
27+
}
28+
29+
public void remove(int element) {
30+
buckets[element % buckets.length].remove(element);
31+
}
32+
33+
public boolean contains(int element) {
34+
return buckets[element % buckets.length].contains(element);
35+
}
36+
37+
private void initializeBuckets() {
38+
for (int index = 0 ; index < buckets.length ; index++) {
39+
buckets[index] = new Bucket();
40+
}
41+
}
42+
43+
private static class Bucket {
44+
Queue<Integer> list = new LinkedList<>();
45+
46+
public boolean contains(int element) {
47+
return list.contains(element);
48+
}
49+
50+
public void add(int element) {
51+
if (!this.contains(element)) {
52+
list.add(element);
53+
}
54+
}
55+
56+
public void remove(int element) {
57+
list.remove(element);
58+
}
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)