File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change
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
+ };
You can’t perform that action at this time.
0 commit comments