Skip to content

Commit 3dacfb1

Browse files
committed
Adjust & add solution for ContainsDuplicates task
1 parent 93e3f6a commit 3dacfb1

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

src/main/java/by/andd3dfx/collections/ContainsDuplicates.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
*/
2929
public class ContainsDuplicates {
3030

31-
public boolean containsDuplicate(int[] nums) {
31+
public boolean usingSet(int[] nums) {
3232
Set<Integer> set = new HashSet<>();
3333
for (int num : nums) {
3434
if (!set.add(num)) {
@@ -37,4 +37,28 @@ public boolean containsDuplicate(int[] nums) {
3737
}
3838
return false;
3939
}
40+
41+
public boolean usingSortWithEarlyReturn(int[] nums) {
42+
for (int i = 0; i < nums.length; i++) {
43+
int min_index = i;
44+
45+
for (int j = i + 1; j < nums.length; j++) {
46+
if (nums[j] == nums[min_index]) {
47+
return true;
48+
}
49+
if (nums[j] < nums[min_index]) {
50+
min_index = j;
51+
}
52+
}
53+
54+
swap(nums, i, min_index);
55+
}
56+
return false;
57+
}
58+
59+
private void swap(int[] array, int i, int j) {
60+
var tmp = array[i];
61+
array[i] = array[j];
62+
array[j] = tmp;
63+
}
4064
}

src/test/java/by/andd3dfx/collections/ContainsDuplicatesTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,16 @@ public void setUp() throws Exception {
1616
}
1717

1818
@Test
19-
public void containsDuplicate() {
20-
assertTrue(containsDuplicates.containsDuplicate(new int[]{1, 2, 3, 1}));
21-
assertFalse(containsDuplicates.containsDuplicate(new int[]{1, 2, 3, 4}));
22-
assertTrue(containsDuplicates.containsDuplicate(new int[]{1, 1, 1, 3, 3, 4, 3, 2, 4, 2}));
19+
public void usingSet() {
20+
assertTrue(containsDuplicates.usingSet(new int[]{2, 1, 3, 1}));
21+
assertFalse(containsDuplicates.usingSet(new int[]{2, 1, 3, 56, 4}));
22+
assertTrue(containsDuplicates.usingSet(new int[]{1, 1, 1, 3, 3, 4, 3, 2, 4, 2}));
23+
}
24+
25+
@Test
26+
public void usingSortWithEarlyReturn() {
27+
assertTrue(containsDuplicates.usingSortWithEarlyReturn(new int[]{2, 1, 3, 1}));
28+
assertFalse(containsDuplicates.usingSortWithEarlyReturn(new int[]{2, 1, 3, 56, 4}));
29+
assertTrue(containsDuplicates.usingSortWithEarlyReturn(new int[]{1, 1, 1, 3, 3, 4, 3, 2, 4, 2}));
2330
}
2431
}

0 commit comments

Comments
 (0)