Skip to content

Commit 08e086e

Browse files
solves #2996: Smallest Missing Integer Greater Than Sequential Prefix Sum in java
1 parent 005bed9 commit 08e086e

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -879,7 +879,7 @@
879879
| 2970 | [Count the Number of Irremovable Subarrays I](https://leetcode.com/problems/count-the-number-of-incremovable-subarrays-i) | [![Java](assets/java.png)](src/CountTheNumberOfIncremovableSubarraysI.java) | |
880880
| 2974 | [Minimum Number Game](https://leetcode.com/problems/minimum-number-game) | [![Java](assets/java.png)](src/MinimumNumberGame.java) | |
881881
| 2980 | [Check if Bitwise OR Has Trailing Zeros](https://leetcode.com/problems/check-if-bitwise-or-has-trailing-zeros) | [![Java](assets/java.png)](src/CheckIfBitwiseORHasTrailingZeros.java) | |
882-
| 2996 | [Smallest Missing Integer Greater Than Sequential Prefix Sum](https://leetcode.com/problems/smallest-missing-integer-greater-than-sequential-prefix-sum) | | |
882+
| 2996 | [Smallest Missing Integer Greater Than Sequential Prefix Sum](https://leetcode.com/problems/smallest-missing-integer-greater-than-sequential-prefix-sum) | [![Java](assets/java.png)](src/SmallestMissingIntegerGreaterThanSequentialPrefixSum.java) | |
883883
| 3000 | [Maximum Area of Longest Diagonal Rectangle](https://leetcode.com/problems/maximum-area-of-longest-diagonal-rectangle) | | |
884884
| 3005 | [Count Elements With Maximum Frequency](https://leetcode.com/problems/count-elements-with-maximum-frequency) | | |
885885
| 3010 | [Divide an Array Into Subarrays With Minimum Cost I](https://leetcode.com/problems/divide-an-array-into-subarrays-with-minimum-cost-i) | | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// https://leetcode.com/problems/smallest-missing-integer-greater-than-sequential-prefix-sum
2+
// T: O(N)
3+
// S: O(N)
4+
5+
import java.util.HashSet;
6+
import java.util.Set;
7+
8+
public class SmallestMissingIntegerGreaterThanSequentialPrefixSum {
9+
public int missingInteger(int[] array) {
10+
final int sequentialSum = getLongestSequentialSum(array);
11+
final Set<Integer> numbers = toSet(array);
12+
for (int start = sequentialSum ; ; start++) {
13+
if (!numbers.contains(start)) {
14+
return start;
15+
}
16+
}
17+
}
18+
19+
private static Set<Integer> toSet(int[] array) {
20+
final Set<Integer> set = new HashSet<>();
21+
for (int element : array) {
22+
set.add(element);
23+
}
24+
return set;
25+
}
26+
27+
private static int getLongestSequentialSum(int[] array) {
28+
int sum = array[0];
29+
for (int i = 1 ; i < array.length ; i++) {
30+
if (array[i] == array[i - 1] + 1) {
31+
sum += array[i];
32+
} else {
33+
break;
34+
}
35+
}
36+
return sum;
37+
}
38+
}

0 commit comments

Comments
 (0)