Skip to content

Commit 71dcc56

Browse files
bael-8350:implementation (eugenp#17186)
* bael-8350:implementation * bael-8350: feedback --------- Co-authored-by: technoddy <[email protected]>
1 parent f8c1955 commit 71dcc56

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

algorithms-modules/algorithms-miscellaneous-7/src/test/java/com/baeldung/algorithms/findmissingnumber/FindMissingNumberUnitTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5+
import java.util.ArrayList;
56
import java.util.Arrays;
67
import java.util.BitSet;
8+
import java.util.Collections;
9+
import java.util.List;
10+
import java.util.stream.Collectors;
711
import java.util.stream.IntStream;
812

913
import org.junit.jupiter.api.BeforeEach;
@@ -81,4 +85,30 @@ void givenIntegersArray_whenUseBitSetToFindMissingNumber_thenGetMissingNumber()
8185

8286
assertEquals(3, missingNumber);
8387
}
88+
89+
@Test
90+
void givenIntegersArrayWithMultipleMissingNumbers_whenUseBitSetToFindMultipleMissingNumbers_thenGetMultipleMissingNumbers() {
91+
int[] numbersWithMultipleMissing = new int[] { 1, 5, 2, 8, 9 };
92+
int N = Arrays.stream(numbersWithMultipleMissing)
93+
.max()
94+
.getAsInt();
95+
96+
BitSet allBitSet = new BitSet(N + 1);
97+
IntStream.rangeClosed(1, N)
98+
.forEach(allBitSet::set);
99+
100+
BitSet presentBitSet = new BitSet(N + 1);
101+
Arrays.stream(numbersWithMultipleMissing)
102+
.forEach(presentBitSet::set);
103+
104+
allBitSet.and(presentBitSet);
105+
106+
List<Integer> result = IntStream.rangeClosed(1, N)
107+
.filter(i -> !allBitSet.get(i))
108+
.boxed()
109+
.sorted()
110+
.collect(Collectors.toList());
111+
112+
assertEquals(result, Arrays.asList(3, 4, 6, 7));
113+
}
84114
}

0 commit comments

Comments
 (0)