Skip to content

Commit e35eb08

Browse files
committed
added Maximum Sum of Distinct Subarrays With Length K problem
1 parent 6663c1b commit e35eb08

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
class Solution
2+
{
3+
public:
4+
long long maximumSubarraySum(vector<int> &nums, int k)
5+
{
6+
long long maxSum = 0;
7+
long long sumOfCurr = 0;
8+
unordered_map<int, int> mp;
9+
int n = nums.size();
10+
int countOfSame = 0;
11+
for (int i = 0; i < k; i++)
12+
{
13+
if (mp[nums[i]] > 0)
14+
{
15+
countOfSame++;
16+
}
17+
mp[nums[i]] += 1;
18+
sumOfCurr += nums[i];
19+
}
20+
21+
if (countOfSame == 0)
22+
{
23+
maxSum = max(sumOfCurr, maxSum);
24+
}
25+
int i = k;
26+
while (i < n)
27+
{
28+
sumOfCurr -= nums[i - k];
29+
if (mp[nums[i - k]] > 1)
30+
{
31+
countOfSame--;
32+
}
33+
mp[nums[i - k]] -= 1;
34+
35+
if (mp[nums[i]])
36+
{
37+
countOfSame++;
38+
}
39+
mp[nums[i]] += 1;
40+
sumOfCurr += nums[i];
41+
42+
if (countOfSame == 0)
43+
{
44+
maxSum = max(sumOfCurr, maxSum);
45+
}
46+
i++;
47+
}
48+
49+
return maxSum;
50+
}
51+
};

0 commit comments

Comments
 (0)