-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_2461_MaximumSumofDistinctSubarraysWithLengthK.java
More file actions
40 lines (31 loc) · 1.18 KB
/
_2461_MaximumSumofDistinctSubarraysWithLengthK.java
File metadata and controls
40 lines (31 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.HashMap;
public class _2461_MaximumSumofDistinctSubarraysWithLengthK {
public long maximumSubarraySum(int[] nums, int k) {
long maxSum = 0;
long winSum = 0;
HashMap<Integer,Integer> map = new HashMap<>();
int left = 0;
for (int right = 0; right < nums.length; right++) {
map.put(nums[right], map.getOrDefault(nums[right], 0)+1);
winSum += nums[right];
if (right - left + 1 > k) {
map.put(nums[left], map.get(nums[left]) - 1);
if (map.get(nums[left]) == 0) {
map.remove(nums[left]);
}
winSum -= nums[left];
left++;
}
if (right - left + 1 == k && map.size() == k) {
maxSum = Math.max(maxSum, winSum);
}
}
return maxSum;
}
public static void main(String[] args) {
_2461_MaximumSumofDistinctSubarraysWithLengthK maxSum = new _2461_MaximumSumofDistinctSubarraysWithLengthK();
int[] nums = {1,5,4,2,9,9,9};
long ans = maxSum.maximumSubarraySum(nums, 3);
System.out.println(ans);
}
}