Skip to content

Commit c6cff3d

Browse files
authored
Create 2461-maximum-sum-of-distinct-subarrays-with-length-k.js
1 parent b2ef4af commit c6cff3d

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
const maximumSubarraySum = function(nums, k) {
7+
let res = 0
8+
const n = nums.length
9+
10+
const preSum = Array(n).fill(0)
11+
preSum[0] = nums[0]
12+
for(let i = 1; i < n; i++) {
13+
preSum[i] = preSum[i - 1] + nums[i]
14+
}
15+
16+
const set = new Set()
17+
18+
const lastHash = {}
19+
20+
for(let i = 0; i < n; i++) {
21+
const cur = nums[i]
22+
lastHash[cur] = i
23+
if(i < k - 1) set.add(cur)
24+
else if(i === k - 1) {
25+
set.add(cur)
26+
if(set.size === k) {
27+
res = preSum[i]
28+
}
29+
} else {
30+
if(lastHash[nums[i - k]] == i - k) set.delete(nums[i - k])
31+
set.add(nums[i])
32+
if(set.size === k) {
33+
res = Math.max(res, preSum[i] - preSum[i - k])
34+
}
35+
}
36+
}
37+
38+
return res
39+
};

0 commit comments

Comments
 (0)