Skip to content

Commit dadb59b

Browse files
authored
Create Maximum Sum of Almost Unique Subarray.java
1 parent b234fe8 commit dadb59b

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
public long maxSum(List<Integer> nums, int m, int k) {
3+
long result = 0;
4+
long currSum = 0;
5+
Map<Integer, Integer> frequencyMap = new HashMap<>();
6+
int uniqueCount = 0;
7+
for (int i = 0; i < nums.size(); i++) {
8+
int curr = nums.get(i);
9+
frequencyMap.put(curr, frequencyMap.getOrDefault(curr, 0) + 1);
10+
if (frequencyMap.get(curr) == 1) {
11+
uniqueCount++;
12+
}
13+
currSum += curr;
14+
if (i >= k - 1) {
15+
if (uniqueCount >= m) {
16+
result = Math.max(result, currSum);
17+
}
18+
int temp = nums.get(i - k + 1);
19+
frequencyMap.put(temp, frequencyMap.getOrDefault(temp, 0) - 1);
20+
if (frequencyMap.get(temp) == 0) {
21+
uniqueCount--;
22+
}
23+
currSum -= temp;
24+
}
25+
}
26+
return result;
27+
}
28+
}

0 commit comments

Comments
 (0)