Skip to content

Commit 7bc41c8

Browse files
authored
Create maximum-sum-of-almost-unique-subarray.cpp
1 parent 7e90df3 commit 7bc41c8

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time: O(n)
2+
// Space: O(n)
3+
4+
// freq table, two pointers, sliding window
5+
class Solution {
6+
public:
7+
long long maxSum(vector<int>& nums, int m, int k) {
8+
unordered_map<int, int> lookup;
9+
long long result = 0, curr = 0;
10+
for (int right = 0, left = 0; right < size(nums); ++right) {
11+
curr += nums[right];
12+
++lookup[nums[right]];
13+
if (right - left + 1 == k + 1) {
14+
if (--lookup[nums[left]] == 0) {
15+
lookup.erase(nums[left]);
16+
}
17+
curr -= nums[left];
18+
++left;
19+
}
20+
if (right - left + 1 == k && size(lookup) >= m) {
21+
result = max(result, curr);
22+
}
23+
}
24+
return result;
25+
}
26+
};

0 commit comments

Comments
 (0)