Skip to content

Commit 95c0995

Browse files
authored
Create 3381-maximum-subarray-sum-with-length-divisible-by-k.js
1 parent ef4c6a6 commit 95c0995

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
var maxSubarraySum = function (nums, k) {
7+
const n = nums.length
8+
let res = -Infinity
9+
const pre_sum = new Array(n + 1).fill(0)
10+
11+
for (let i = 0; i < n; i++) {
12+
pre_sum[i + 1] = pre_sum[i] + nums[i]
13+
}
14+
15+
const groups = Array.from({ length: k }, (_, i) => [pre_sum[i]])
16+
17+
for (let i = k; i <= n; i++) {
18+
const idx = i % k
19+
groups[idx].push(pre_sum[i])
20+
}
21+
22+
for (let i = 0; i < k; i++) {
23+
const group = groups[i]
24+
const mx_dp = new Array(group.length + 1).fill(-Infinity)
25+
26+
for (let j = group.length - 1; j >= 0; j--) {
27+
mx_dp[j] = Math.max(mx_dp[j + 1], group[j])
28+
}
29+
30+
for (let j = 0; j < group.length; j++) {
31+
res = Math.max(res, mx_dp[j + 1] - group[j])
32+
}
33+
}
34+
35+
return res
36+
}

0 commit comments

Comments
 (0)