Skip to content

Commit 1586f00

Browse files
committed
Add aykrieger: First Non-Duplicate
1 parent f817dfb commit 1586f00

File tree

4 files changed

+56
-0
lines changed

4 files changed

+56
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ HackerRank assigns their problems a difficulty rating (Easy, Medium, Hard, Exper
184184

185185
- K-diff Pairs in an Array (Medium) [Problem](https://leetcode.com/problems/k-diff-pairs-in-an-array/) | [Solution](https://github.com/aykrieger/coding-exercises/blob/master/src/main/java/leetcode/KDiffPairsInAnArray.java)
186186

187+
## aykrieger (1 Problem)
187188

189+
- First Non-Duplicate [Solution](https://github.com/aykrieger/coding-exercises/blob/master/src/main/java/aykrieger/FirstNonDuplicate.java)
188190

189191
## Contributing
190192

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@
1313
<artifactId>commons-lang3</artifactId>
1414
<version>3.7</version>
1515
</dependency>
16+
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
17+
<dependency>
18+
<groupId>org.junit.jupiter</groupId>
19+
<artifactId>junit-jupiter-api</artifactId>
20+
<version>5.8.2</version>
21+
<scope>test</scope>
22+
</dependency>
1623
</dependencies>
1724

1825
<properties>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package aykrieger;
2+
3+
import java.util.LinkedHashSet;
4+
5+
public class FirstNonDuplicate {
6+
7+
private LinkedHashSet<Integer> linkedSet = new LinkedHashSet<>();
8+
9+
public void add(int number) {
10+
if (!linkedSet.contains(number)) {
11+
linkedSet.add(number);
12+
} else {
13+
linkedSet.remove(number);
14+
}
15+
}
16+
17+
public int firstNonDuplicate() {
18+
return linkedSet.isEmpty() ? -1 : linkedSet.iterator().next();
19+
}
20+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package aykrieger;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
/**
8+
* Test class for {@link FirstNonDuplicate}
9+
*/
10+
public class FirstNonDuplicateTest {
11+
12+
@Test
13+
public void testFirstNonDuplicate() {
14+
FirstNonDuplicate firstNonDuplicate = new FirstNonDuplicate();
15+
firstNonDuplicate.add(10);
16+
firstNonDuplicate.add(11);
17+
firstNonDuplicate.add(12);
18+
assertEquals(10, firstNonDuplicate.firstNonDuplicate());
19+
firstNonDuplicate.add(10);
20+
assertEquals(11, firstNonDuplicate.firstNonDuplicate());
21+
firstNonDuplicate.add(11);
22+
firstNonDuplicate.add(12);
23+
assertEquals(-1, firstNonDuplicate.firstNonDuplicate());
24+
}
25+
26+
27+
}

0 commit comments

Comments
 (0)